Ardour 9.5 released
May 19, 2026
We are pleased to announce the release of Ardour 9.5. The new version comes with new features, quality-of-life improvements, and bugfixes. For this release, we focused on MIDI editing and implemented chord editing and reference (ghost) notes display in pianoroll interfaces.
Pianoroll improvements
Chord editing and quantization
The pianoroll interfaces now have a left sidebar for chord editing and quantization (the toggle is at the left of the toolbar). Switch to the draw mode, enable the pencil icon for a 3, 4 or 5-note chord, and draw the root note to place the chord.
You can also select an existing chord and change it to a different one by clicking on the new chord name. Similarly, you can apply inversions or drop notes in an existing chord.
If you want MIDI notes to have a strong relationship with the grid, you can quantize the performance: select notes, expand the Quantize section of the sidebar on the left, set the quantization grid, and and press Q above notes.
Cubase-style cross cursor
Pianoroll interfaces now have a Cubase-style cross cursor for MIDI editing. You can use it for orientation when drawing notes or automation.
Multiple regions and reference notes
You can now open multiple MIDI regions in the same pianoroll interface and edit one region while looking at notes of other regions (often called ghost notes in other DAWs). To do that, select two or more regions that start at the same time and either enable the bottom pane or open the pianoroll window. One region will be active for editing, the color of inactive regions will fade just enough to be visible and give you guidance.
You can switch freely between regions using a drop-down list at the top of the pianoroll interface.
Alternatively, and usually when the notes in different regions are sufficiently far apart from each other, you can edit multiple MIDI regions at the same time. To do that, switch from Active Region to All Regions in a drop-down list in the pianoroll toolbar.
Color schemes
Notes in pianoroll interfaces can now use different coloring schemes: ‘velocity’, ‘channel’, ‘track’, and ‘pitch’. The ‘pitch’ color theme is configurable.
Automation lanes
MIDI automation lanes in the pianoroll interfaces are now stacked on top of each other. Rather than using one of the four predefined ones like in v9.0, you can select any automation lane, add new control points or edit existing ones, and clear any lane with one click.
To add a new automation lane, click on the A button in the pianoroll toolbar and select any lane available in the list.
Other changes
We also improved interaction with the pianoroll. For example, Shift-scrolling now works horizontally over MIDI regions, even with a note selected.
Additionally, the grid is now rendered behind notes just like in the editor.
Quality-of-life improvements
RegionFX
Region automation control points are now visible when you hover over a region.
Summary pane
The summary pane is now themable, thinner by default, has zoom controls on the right, and renders the overview and markers sharper.
Plugin views
Plugin views in the editor's bottom pane can now be collapsed for quick access to frequently changed plugins. Collapsed views include a bypass toggle, so you can disable a plugin without expanding it.
Track templates
On the Mixer page, you can now access local and global track templates. Pick one and drop it onto an existing track to replace its processing.
Color themes
Two new color themes ship with this release: Arc (left) and OneDark (right).
MCP server control protocol
Version 9.5 ships a community-contributed MCP server for controlling Ardour from a locally running large language model. One of the practical uses is improved accessibility for users with visual impairments — an area where even commercial digital audio workstations fall short.
This is an opt-in feature. To enable it, go to "Edit > Preferences > Control Surfaces" and tick the "MCP HTTP Server (experimental)" checkbox. After that, click on the Show Protocol Settings button below copy the MCP URL and the listen port.
For more information on setting up Ardour for use with a locally running LLM, please read this guide.
Please note that while we ship the MCP server as an opt-in feature, this implementation does not extend to generating audio with LLMs. Nor do we accept LLM-generated patches (see here for more information).
Initial MSVC support
Thanks to EZ4Stephen, we now have initial support for building Ardour with MSVC. Please note that we are still making official Ardour builds for Windows with MinGW.
Improvements
- Resample metronome click sounds to match session rate
- Correctly identify files that would be overwritten on export (e.g. duplicate timespan name, export format)
- Clear session meta-data for new sessions #10236
- Don't scroll when selecting tacks as side-effect of ripple all
- Mix-tools: Import special busses as audio-bus (not tracks)
- Mix-tools: Restore MonitorChoice when importing route state
- Save default MIDI draw channel and velocity
- Panner GUI now indicates if it is insesitive due to automation playback
- Only play notes on selection when not rolling
- Use natural sort for Regions/Source names
- Improve session dialog layout and resizing (show long session names)
- Overhaul summary. Move scroll/zoom buttons into the scrollbar
- Editor: allow starting a selection from the bottom dropzone
- Editor: bypass follow playhead when dragging without changing the action's state
- Editor: freehand draw: allow (and fix) right to left drawing
- Correct numeric entry of MIDI pitchbend
- Add clear button to MIDI trace window
- Properly round pixel position for correct display of fade-in/out curves
- Optimize rendering MIDI playlists with opaque overlaps
- Handle edge-case where MIDI devices on Window contain unusual chars
- Cleanup theme files
- Move splash creation to very early in the startup process. Notably on Windows there was otherwise no initial indication that Ardour was starting and detecting Audio/MIDI devices.
- Edit in separate window is valid for multiple regions
- Use time-domain-aware position for ripple extent when moving a region
- Give that session a default musical key
- Processors are scale providers too
- Start fleshing out MusicalMode API
- Add scala file handling "library"
- Allow MusicalMode object to be constructed from a Scala file
- Relax library dependency to ensure Linux distros can build Ardour
- Complete overhaul of Mutex and Thread Pool, use modern C++
- Significant internal refactoring and code cleanup, remove many deprecated API calls
- Generalize LibraryFetcher for other resources (prepare for demo sessions)
- The return of jpeg support for images
- OSC: Add "Marker Locate Priority" preference
- OSC: add callback for two string arguments
- OSC: Add goto_marker() and rename_marker()
- OSC: Remove set_marker()
- OSC: tweak goto_marker() and add /locate_to_marker
- OSC: Add /is_recording
- OSC: Fix /all_tracks_rec_in and /all_tracks_rec_out
- MCU: Clean up loop style
- Mackie: by default, follow stripable selection by banking so that selected is on first fader
- Mackie: add follow-selection button preferences "dialog" for mackie control
- Add Lua script to customize I/O config
- Add Lua script example for ControlProtocol API (handy for headless sessions)
- Sort Lua dialog radio buttons #10288
- Edit Time Signature dialog shouldn't be resizable
- Improve jack port diagnostics and ignore other ports
- Set exclusive trigger/track rec button sensitivity
- A new, broader approach to MIDI chase during locate
- Activate MIDI editing bindings only when in a MIDI track or MIDI region
- MIDI binding should be disabled/enabled by being anywhere in a MIDI track
- MIDI editing: new add-interval-X for adding notes above a root, with LEVEL-4 + KP_n bindings
- Allow note preview/ghost note for draw mode to be 1 bar long (or longer!)
- Add tooltips for Left/Right/Bottom Panel visibility buttons
- Leave the console/text receiver so log message go to both places.
- MIDI view: only update automation selection when rubberband selection is finished
- Automation line: make sure points are visible when added to an existing selection
- Automation line: add a sensitive line color, and don't show control points if insensitive
- Automation draw drags with no movement should resolve to a click functor in the relevant EditingContext
- No region editor box in selection properties box for MIDI regions
- Perform horizontal scrolling when mouse is on the midi region and the shift key is pressed while scrolling. It should scroll even when midi note is selected.
- Make snapping finalization consistent with the snapping preview when resizing midi notes
- Various improvements to Ardour's own button widgets.
Plugin-related
- Allow to load VSTs with names that are not in the current user's locale
- Fix scanning some VST3 plugins
- Prevent adding/removing plugins while recording
- Favorite Plugin sidebar: only show context menu when clicking in row
- Add GUI message to indicate why adding plugins failed
- Handle LV2 plugins that use non-URI extensions without crashing.
Control Surfaces
- Mackie: Prevent iCON V1-M from displaying master label
- The V1-M doesn't have a master display, so this variable should always be false when using one.
- Mackie: fix a crash when using subviews
- This crash would occur when closing a session in any way while any subview other than "Pan" was open on a connected MCU controller. Not resizing _strip_vpots_over_all_surfaces caused an attempt to dereference a dangling pointer.
- OSC: tweak goto_marker() and add /locate_to_marker
- /goto_marker goes and stops transport, /locate_to_marker goes and leaves transport untouched.
- OSC: Fix /all_tracks_rec_in and /all_tracks_rec_out
- OSC: Add /is_recording
- Returns whether or not audio is currently being recorded.
- Add "Marker Locate Priority" preference
When attempting to locate to a marker with a certain name (via OSC) or pgm change number (via MCU), Ardour would previously choose the first in the event of duplicates.
This preference allows you to choose between the first, last, or next marker instead.
- OSC: Add goto_marker() and rename_marker()
- Replacing the previous set_marker() (/marker), which would either locate or rename based on whether or not the specified marker existed and if the playhead was currently at a marker.
- OSC: Remove set_marker()
- Deprecated, has been replaced by goto_marker() (/goto_marker) and rename_marker() (/rename_marker).
Fixes
- Fix latency compensation when using side-chain sends
- Fix audible artifacts for muted aux-sends #10182
- Mitigate crash when deleting loop range while looping
- Fix MIDI timestretch
- Fix MIDI chase - if a locate ends up in an area with no regions, clear the DR locate tracker
- Fix auditioning with processors on the monitor bus (no more stuttering)
- Fix relative snapping in bottom piano roll. For bottom piano roll, the absolute beat position is now calculated when resizing or copying the midi notes even when the midi region is shifted on the timeline. Now the timeline shifting does not affect the snapping in the bottom piano roll.
- Fix moving/snapping a region to a grid line in audio time domain
- Fix position of new points created by clicking near an automation line
- Fix undo/redo when adding the first point to a Regoin Gain line
- Fix rare crash when toggling Real Time Analyzer
- Prevent rec-arming trigger when track is already rec-arm'ed
- Fix initial latency display in status bar
- Fix race/crash when importing mono strip state on multi-channel route
- Fix import-route progress report
- Fix saving Glib::DateTime on windows (no microsecond support)
- Fix editing-context MIDI channel range
- Fix moving selection (duplicate range) #9773
- Fix pitch-bend automation delta display #7247
- Show detailed archive error messages (disk-full etc)
- Fix Strip import cancel action
- Correctly interpret arrangement markers as ranges
This fixes export ranges using arrangmenent sections
- Fix numpad-4 & numpad-5 keybindings
- Fix crashes when compiled with a compiler that liberally interprets -ffast-math semantics (e.g. clang 19)
- Allow address sanitizer use with macOS XCode 26.4 builds, clang-21.0
- Fix Locations::find_all_between when using musical time
- automation data can no longer be placed too late within a region.
- keyboard shortcuts: add p: prefix to search by action path and trim search strings when using a prefix
- recorder ui: fix group tabs (#10205)
- Do not fire double click events from piano-roll keys
Translation Updates
French, German, Italian, Polish, Russian, and Swedish
Contributors
Aleksandr Prokudin, Daniel Nylander, Edgar Aichinger, EZ4Stephen, Franke Burgarino, Frankie Doo, GR3YH4TT3R93, hjizerena, jean-emmanuel, John Emmas, John-John Tedro, Krzysztof Gajdemski, Martin Osborne, Masato, newpson, Olivier HUMBERT, Paul Davis, Robin Gareus, Todd Naugle, Vineet Tiwari, xris1658
Older News
- There was no 9.4 release.
- There was no 9.3 release.
- 9.2 release.
- 9.0 release.
- 8.12 release, along with 8.7, 8.8 and 8.9.
- 8.6 release.
- There was no 8.5 release.
- 8.4 release.
- There was no 8.3 release.
- 8.2 released.
- 8.0/8.1 released.
- 7.5 released.
- 7.4 released.
- 7.3 released.
- 7.2 released.
- 7.1 released.
- 7.0 released.
- 6.9 released.
- 6.8 released.
- 6.7 released.
- 6.6 released.
- 6.5 released.
- 6.4 was released but immediately superceded by 6.5.
- 6.3 released.
- 6.2 released.
- There was no 6.1 release.
- 6.0 released.
- 5.12 released.
- 5.11 released.
- 5.10 released.
- 5.9 released.
- 5.8 released.
- There was no 5.7 release.
- 5.6 released.
- 5.5 released.
- 5.4 released.
- 5.3 released.
- 5.0 released.
- 4.7 released.
- 4.6 released.
- There was no 4.5 release.
- 4.4 released.
- There was no 4.3 release.
- 4.2 released.
- 4.1 released.
- 4.0 released.
- 3.5 releases.
- 3.4 released.
- 3.3 released.
- 3.2 released.
- 3.1 released.
- 3.0 released.
