Ardour 8.10 released

October 17th 2024

Ardour 8.10 is now available for Linux, Windows and macOS. As with the last several releases, 8.9 turned out to have at least a couple of new major issues that required a hot-fix. We believe that we have corrected issues with performance caused by scheduling of disk input/output threads (these problems tended to be system dependent, but were very real on systems where they occured). Importing SMF (MIDI) via drag-n-drop now uses the file name once again. Content-slipping a region correctly causes an update of the playback buffers so you can hear the result as expected.

In addition to those hot-fixes, 8.10 sees small updates to all our non-default color themes, a new MIDI binding map for the M-Audio Axiom 49 MkII and a new Lua script to duplicate regions on the grid.

This is intended to be the last release of the 8.x series. Our git repository is now at 9.0-pre0, and should no longer be considered stable or usable for production work now that it contains what was the "pianorule" branch. Over the next few months, we will be working hard to get this into shape for a 9.0 release with several notable new features.

a screenshot showing Ardour 8.7

Download  

8.8 Improvements and Fixes

  • Add option to name new MIDI tracks from SMF with just the SMF track name.
  • Fix for LV2 plugins whose GUI depend on a "changed" signal (e.g. ZynSubAddFX).
  • Fix MIDI Clock output times by using the correct call to get tempo at a position.
  • Overdubbing in non-layered mode no longer assignes regions to the wrong groups.
  • Add build support for latest versions of macOS.
  • Generic MIDI: do not send touch events for all mapped controllers when one is touched.
  • Fix fan-out of instruments with illegal path-chars in their name.
  • Require user's own color theme files to be versioned.
  • Fix underruns when looping/locating and changing region content.
  • Do not allow changing the loop range while recording.
  • Avoid pixel-level shifts in waveform when splitting or trimming regions.
  • Fix playhead moving beyond loop range.
  • Fix count-in/preroll recording offsets.
  • Use dedicated thread to start export timespans.
  • Fix and simplify Playlist::fade_range for multiple ranges.
  • Fix interaction with snapshot list.
  • Fix sample-rate display rounding for 22.05kHz.
  • Fix playback of sessions with low sample-rate.
  • VST3: Fix possible deadlock when using PSL extension for sends.
  • VST3: work around plugins that do not heed ContextInfo::kSendCount.
  • Fix XML syntax for AKAI MPK mini mk3 MIDI binding map.

Alexandre Prokoudine, Ben Loftis, Fabio Pesari, John Emmas Paul Davis and Robin Gareus contributed to this release.

New Features

Track dragging

Ardour always had various mechanisms for reordering tracks and busses in both the editor and mixer views. However, with 8.7 you can now use the mouse to drag selected tracks and busses up or down. Note that VCAs cannot be reordered in this way. We don't think that mouse-based dragging is actually any better than the other methods we offer, but we understand that some users just feel more comfortable with it.

Ruler changes

We decided it was time to reduce the number of possible rulers Ardour can display, to reduce confusion and chances for error. Those showing markers of various kinds have been reduced to just three: one for locations (single points in time), one for ranges (pairs of points, a start and an end), and one for arrangement (sections). You can still show all the same kinds of markers as before, but some of them (e.g. CD markers — it's 2024! — and cue markers) no longer get their own ruler.

MIDI Scene markers

The ability to record MIDI program and bank changes and then replay them from the timeline was added several years ago during the development of Waves Tracks Live. The recent (re)development of Harrison LiveTrax prompted us to finally expose this in Ardour. Connect some external MIDI device that sends these messages to the Scene In port, and during recording, Ardour will record these messages and display them in the Location ruler (if visible). There's no facility to create "MIDI Scenes" like this via the GUI, or to edit their contents - this is mostly aimed at people using external hardware to trigger global scene changes.

Parallel disk I/O

As part of work on features that will be exposed in version 9.0, Ardour now features parallelized disk I/O (reading and writing audio & MIDI to storage). This lets us use those extra cores in modern computers to get more bandwidth from modern, fast storage devices (such as NVMe solid state "disks"). There are the same controls over how many CPU cores to use as have long existed for DSP handling, but for almost everyone the default setting will be the right one. For the nerds among you, no this doesn't interfere with DSP, because the DSP threads are in a different scheduling class and always have priority over everything else.

Improvements

  • Arrangement DnD now defaults to move (not copy).
  • Arrangement markers are named "section N" by default.
  • The "boxy buttons" theming option now works more fully, as intended.
  • Fix inconsistent selection behavior between editor & mixer.
  • Support querying disk space for disks > 16TB.
  • The "clear" operation for ranges now removes punch & loop ranges.
  • Use (a translatable) alphabet instead of numbers for new group names.
  • Be more strict about uniqueness of track names and track name characters.
  • Provide new actions to jump to prev/next location marker (no other markers).
  • Always center the new session dialog.
  • Show master bus comment on session load #9718.
  • Add a new "Captain Light" theme.
  • RF64 files now suffixed with ".wav". RF64 is a WAV-related audio file format that can contain more than 4GB of data. Additionally, files with the ".rf64" suffix in their names show up in the audio file search results & listings.
  • On Linux, "JACK" renamed as "JACK/Pipewire" as a backend name, given Pipewire's growing adoption on that platform.
  • Change default MIDI bindings that use plain ASCII characters to use a different modifier key. This affected bindings for extend, invert and duplicate selection, which moved from Ctrl/Cmd-{e,i,d} (respectively) to Shift-{e,i,d}.
  • Add (bindable) actions for region lock/unlock.
  • Add a preference for MIDI Machine Control (MMC) FastWind command which allows skipping to markers.
  • Tweak MMC behavior: ffwd should start rolling immediately; but disallow ffwd during active recording.
  • Much better handling of modal dialogs on macOS.
  • Live theme color editing now successfully changes the automation tracks' background color.
  • Make double click on mixer strip name button start a rename.
  • Sort MIDI Ports by human readable name in connection matrix.
  • Add action to reset all meter peak hold.
  • Add action to reset all peak-hold (incl input meters).
  • In the case of a missing color theme file, fall back to 'dark'.
  • Update libaaf to v1.0-11-gb04c547.
  • Update mixer and lock icon.
  • Update AAF import UI.

Bug Fixes

  • Fix deleting the same point multiple times (#9689).
  • Skip tags for plugins that are not installed.
  • Allow Lua [session] script to directly set controllables.
  • Properly update Solo state when setting multiple ctrls.
  • Plugininsert match I/O: skip division by zero.
  • Fix signal analysis when buffer-size changes.
  • Overhaul and optimize thread-buffer allocation.
  • Fix region-gain envelope auto-enable when dragging.
  • No crash if instrument selector has no instrument list.
  • Port group display should not crash if there's no auditioner.
  • File browser should not crash if there's no auditioner.
  • Only allow editing top-most MIDI region in layered view.
  • Set explicit StartupWMClass for better Linux desktop user experience.
  • Add a hint about quotes in post-export.
  • Mixer: use ardour widgets instead of native gtk's for plugin list dropdown and search clear button.
  • Fix FPE when adding audio pins to a MIDI plugins.
  • Show/hide group-tab spacer above VCA pane.
  • Fix builds with gcc-14 lstat (#9703 PR #893).
  • When importing AAF's move some code so that it only gets executed once per Source, rather than once for every Region.
  • Remove a declaration that won't be needed now.
  • Fix Marker label ellipsis for concurrent markers.
  • Fix boundary condition first/last marker label length.
  • As we've yet to implement user options, let's prefer AAF filenames rather than extracting an internal Comp name.
  • Avoid timecnt_t exception when loading a region with an excessively long length.
  • Indicate remaining record time for FLAC with ≥.
  • Action group names must not be translatable.
  • Transportmasterwidget may not have a session.
  • Catch issues with invalid region vs. source length.
  • Fix BBT marker calculation when removing time.
  • MIDI Tracer now displays poly pressure values.
  • Add some utility functions to Buffers and BufferSets to allow some kinds of debugging easily.
  • Fix CC event for DM10-mkII Plugin.
  • Clean up slider-controller includes.
  • Aaf: set session name from AAF filename instead of AAF composition name.
  • Update Lua allocator for sessions scripts.
  • Set meter-height depending on configured fader-length.
  • Only send a single note-off when drawing notes.
  • When drawing a note, only play it once.
  • Redraw section markers when reloading session.
  • Downgrade warning (about I/O priority).
  • Correctly load LiveTrax sessions w/DirectOuts sends.
  • Avoid all potential charset conversion when displaying an error relating to filename errors.
  • Shrink audio/MIDI setup dialog when hiding the advanced section.
  • Force timecode mark module to 1, to avoid missing marks.
  • Minor cleanups to timecode metric generation code.
  • Do not allow renaming rec-arm'ed tracks.
  • Allow post-export analysis in sessions w/o auditioner.
  • Fix repeat of stem-export of stereo channels.
  • Fix issues with the length of captured MIDI regions when there are tempo changes present.
  • Refine track drag API to control whether cursor can change on button press.
  • Coremidi: fix crash when receiving long MIDI messages.
  • Fix text display on Cue markers.
  • Fix action labels for gain inc/dec #9719.
  • Add checkbox to master-bus comment editor #9718.
  • Convert stored rec-enable state for older sessions.
  • Prevent locate while recording.
  • No need to set up midi input enable button for every ::set_route().
  • When disconnecting a MIDI port for follows-selection, disconnect all connections.
  • Do not have MIDI input follow selection when recording.
  • Try search-path when updating action scripts.
  • Fix crash (invalid Track Drag) when starting automation value edit.
  • Fix range-selection when snapping to sections.
  • Place "Lock" dialog in the center of the screen.
  • Do not implicitly group trim controls #9724.
  • Constrain gain-control range (notably trim).
  • Hide coverage frame when dragging layered region #9725.
  • Update coverage frame while trimming regions #9725.
  • MIDI Tracer window works with async MIDI ports.
  • Constrain height of group-tab to the editor's height.
  • Prelight group-tab bars (backport from LiveTrax).
  • Fix handling of MIDI controller MSB & LSB values.
  • Jack backend: fix race condition caused by not wrapping jack_set_property() in JACK_SERVER_CALL.
  • Fix reduced channelcount when restarting engine with different device.
  • Fix fader/trim automation after locate.
  • Fp8: tear down GUI before terminating event loop.
  • Fix ctrl surface shutdown sequence.
  • Fix guard point logic for editor_add_ordered API.
  • Add guard points when drawing freehand automation.
  • Throw WrongProgram exception if session was modified with incompatible app.
  • Show a dedicated message dialog for WrongProgram exceptions.
  • Exclude monitor gain from mixer scenes.
  • Hide region peak cursor when mouse leaves regions or canvas.
  • Midi surfaces fixes (partially for PR #898).
  • The return of the tempo-map cut/copy section warning.
  • Fix Lua script to use new API from 0a01acc86a8.
  • Prevent minimizing Dialog Windows on macOS.
  • Collect ctrl surface ports into single bundle.
  • Set punch sensitivity when loading session.
  • Consistently ignore punch-in/out without punch-range.
  • Close RouteGroup dialog when route is deleted.
  • Commandline: Warn when -D is ignored in release mode.
  • Commandline: Allow -D to be specified multiple times.
  • Set Transport Master sensitivity when loading session or changing masters.
  • Make Mew Route Group Dialog modal.
  • Unregister ports directly after RCU update.
  • Fix dragging MIDI events when using a non-trivial tempo-map.
  • Prevent crash when dragging notes near 1|0|0.
  • Significantly speed up building region boundary cache.
  • Fix LTC transport master for incoming 30fps LTC.
  • Fix triggerbox cues when looping.
  • Update Auto-Input meter policy.
  • Remove outdated monitor-modes PDF, refer to the manual.
  • Correctly mark Lollipops for Percussive events as hits.
  • Fix x-alignment of velocity lollis for Percussive Events.
  • Move Mute automation with region(s) #9762.
  • Fix undo when ripple deleting a region (#9767).
  • Fix undo when removing multiple regions on the same track.
  • Fix crash when deleting route while creating a routegroup for it.
  • Fix edge-case pre-roll required for looping.
  • Windows: unregister fonts on crash.
  • Remove "auto-discover" buttom from Mackie GUI.
  • Add some tooltips to audio region properties dialog.
  • Export Report needs to heed RESPONSE_CANCEL for close-all-dialogs.
  • Fix assert() when aborting automation line drag.
  • I/O Plugin: delete plugin after removing it.
  • Drop some shared pointer references after RCU writes.
  • Fix Route Fader (and mute) latency offset #9780.
  • Fix Lua Audio to MIDI script MIDI channel (off by one).
  • Improve reliability of note display while recording MIDI.
  • Use a sensible size for DSP to GUI MIDI messages.
  • Correct handling of transport stop when using JACK Transport.
  • Allow reactivating disabled tracks in the editor.
  • Fix MIDI patch/CC state restore #9770.
  • Fix heap-use-after-free when deleting tempo-markers.
  • Reduce unnecessary use of Boost library headers.
  • Fix hiding of inactive tracks.
  • Consolidate Route context menus (Mixer, Editor, Cue Page).
  • Prevent endless recursive directory scans (notably when searching for VST2 plugins).
  • Make file chooser location text entry/search box functional.

GUI Toolkit Fixes

  • Make file manager recently-used lists work on Windows & macOS.
  • Do not show filter combo box in filechooser if there is only 1 filter.
  • Possible fix for YDK-based Catalina event loop crashes.
  • Fix a likely logic error in GtkMenu handling of enter events.

Plugins

  • LV2: Log connect-optional ports.
  • LV2: Ignore connection optional ports.
  • LV2: fix port/nth-parameter confusion.
  • LV2/Generic UI: Remove direct calls to plugin API.
  • LV2: Fix runtime error free()ing event buffers.
  • LV2: fix atom sequence alignment #9750.
  • LV2: Expose HW concurrency to plugins.
  • LV2: Use 64bit alignment for event buffer #9748.
  • LV2: Connect unknown optional ports to NULL.
  • VST3: handle offline FX processing callbacks.
  • VST3: prepare to provide a runloop to IAudioProcessor.
  • VST3: move runloop into backend (1/3).
  • VST3: move runloop into backend (2/3) - remove UI code.
  • VST3: move runloop into backend (3/3) - old remove API.
  • VST3: fix deadlock when recalling program changes latency.
  • VST3: move static runloop from plugin to Host.
  • VST3: fix runloop query (amend 83207e04e78).
  • VST3: correctly set offline processing.
  • VST3: store kAfterTouch events with the correct size.
  • VST3: do not expose hidden parameters as automatable.
  • VST3: skip context info callbacks during session load.
  • VST3: special case VST3 MIDI CC Ports (similar to JUCE).
  • VST2: store VstMidiEvents with the correct size.
  • VST2: amend prev commit, ignore SysEx and invalid MIDI events.
  • LXVST: fix crash at exit if Linux VSTs are disabled or X11 connection fails.
  • AU: request offline processing when appropriate.
  • Plugins: Ignore offset for scratch/silent buffers.
  • Add API to configure plugins for non-realtime offline processing.
  • Only show automation mode button for PluginInsert controls.

Control Surfaces

  • Support for the (new) Novation LaunchKey mk4 series.
  • Faderport: make the user button function once again.
  • Added midnam for Korg X50.
  • Added MIDNAM for the Kurzweil K2700, from Nikolaos Strikos
  • Add <Author> to Kurzweil K2700 MIDNAM.
  • Rename the DDX3216 binding map to clarify who the vendor is.
  • Add MIDI binding map for Akai MPK mini mk3, contributed by Peter Zenk.
  • Enhance the Arturia MiniLab 3 binding map.
  • Normalize the name of the E-MU Xboard 61 binding map.
  • OSC: Let OSCSelectObserver know about feedback config changes.
  • OSC: Fix send and plugin page size in /set_surface.

Lua Scripting

  • Add a Lua script to select region(s) under the playhead.
  • Add Lua plugin to map DM10-mkII Studio HiHat MIDI messages.

Updated Translations

  • Russian
  • German
  • French
  • Italian

Contributors

Alejandro Domínguez, Alexandre Prokoudine, Attila M. Magyar, Ben Loftis, Daniel Appelt, Daniele Tombolini, Edgar Aichinger, Florian Hülsmann, Guido Pietrella, John Emmas, Maciej Bliziński, Mads Kiilerich, Mark Knoop, Matthijs Kooijman, Mattias Ohlsson, Olivier Humbert, Paul Davis, Robin Gareus, Steffen Klein, agfline, cooltehno, Jean-Emmanuel, Francois-Xavier Thomas, Daniel Appelt, cooltehno.

Older News