Ardour 8.6

Ardour is an audio processing and editing application. It integrates broad hardware support, JACK and ALSA backends, flexible recording features, multi-channel nesting, import and exporting various file formats, comes with ready to use samples from freesound.org. It has a pretty editing UI, mixing, routing, monitoring, panning. Ardour allows non-destructive and non-linear editing, can be used for augmenting audio layers in video files even. And comes with many effect, input and output plugins. It's open source, but asks for donations on the download page for prebuilt binaries.

Tags c audio editor jack multimedia music soundtrack conversion mixing audio-processing audio-effects sampling midi
License GNU GPL
State stable

Recent Releases

8.614 Apr 2024 17:31 major bugfix: 8.6 is a hotfix release to correct a drawing bug that was not noticed/fixed before 8.5. It also corrects a crashing bug that can occur when using JACK2. Ardour 8.6 is available now for Linux, Windows, and macOS. This is another "small" release without major new features, largely because our two lead developers continue to be busy with things linked to future releases. However, 8.6 does see a fix for a problem in 8.4 that affected many Linux users (a crash whenever a file selection dialog was opened, triggered by the presence of certain icon files on their version of Linux).
8.511 Apr 2024 06:25 major feature: Improvements Improvements to AAF import support. Make it easier to use Ardour --gdb on linux by handling SIG32 automatically. Do not include hidden plugin in plugin-list. Use session-file version as part of backup file names in backup/ folder. General MIDI MIDNAM file now includes drum names. Display grid lines for triplets/quintuplets/septuplets. When nudging a single control point, locate to the new position to make the time/position clear. Add support for pitch bend to Reasonable Synth. Bug Fixes Fix Snapping quintuplets and septuplets 2x factor grid: fix quintuplets 2x factor (septuplets still don't draw properly). Update unversal legal path rule for windows (to avoid illegal file names there). Add missing horizontal separator after last track header. Work around itstools bug #9648. Fix undefined symbol when built with VST3 disabled. Disable broken septuplet option. Adding new route in front now works as intended (#9651). Fix jump to next/prev bar. Discard untitled sessions even when not quitting Ardour. Refilling buffers after edits now avoids gaps in audio data. Set correct Timecode widget name. Half-baked automation-point nudge. Fix loading session by relative path. Accumulate IO port-change signals return values. Prevent crashes when trying to add/remove IOPlug ports. Fix a -Wincompatible-pointer-types. Ellipsize inactive track-header name-label (#9674). Prevent double-click on the pianoroll to toggle track height. Clarify that there are no archive file format options. Fix crashing file dialogs - fdopen(3) requires _POSIX_C_SOURCE. Set default time domain to Audiotime to sidestep various MusicTime issues. Fix solo controller for Monitor bus. Fix potential memory corruption in AVX512f DSP.
8.421 Feb 2024 11:50 minor feature: Mixer interaction fixes (interaction consistent use of button press and release). Lots of miscellaneous color and drawing tweaks. AAF import now (mostly) functional. This is still somewhat experimental, but we would welcome feedback.. Add metadata to session property editor so that search "works" there. Dummy Backend: allow testing with some prime buffersizes. Region groups: do not group multiple takes on a single track. Add a tooltip to describe ops on the pianoroll header, incl note select. Don't show plugin preset UI for plugins without controls. New "adwaita" color theme (based on the GNOME Adwaita desktop theme). Don't show automation of hidden plugins. Set default MIDI CC values to be more in line with MIDI specs. MIDI notes that were already on/down when recording starts are now captured. This change needs a more refined version, particularly to retain the velocity of these "early" notes, but this is a step in the right direction.
8.320 Feb 2024 05:45 minor feature:
8.213 Dec 2023 03:15 major feature: Note tupling: inspired by a feature in the new Ableton Live 12 - while editing MIDI, select one or more notes, then press "s" to split each note into two equally sized parts. Press "s" again to split into 3, then 4, 5 and so on. Reverse the process with shift-S. Use "j" to join selected adjacent notes back together. As you can see in this video this can be a very powerful technique for working with complex rhythms. No-strobe option: a new user preference that can disable all "flashing" and "blinking" elements of Ardour's GUI, intended for users with sensitivity to this sort of visual input. If enabled, clocks do not run, no buttons blink, and meters do not move. Support for the Solid State Logic UF8 (a USB MIDI / Mackie Control Protocol device) Support for the Novation LaunchPad X and LaunchPad Mini devices. This completes Ardour's support for the full range of Novation LaunchPad mk3 devices. As with the Launchpad Pro support introduced in v8.0, Ardour's support follows the Novation user manual for the X. We decided to make the Mini behaves identically: it lacks some built-in button labels compared to the X, but in other respects shares the same layout, at a smaller scale. Improvements and Bug Fixes Change default sample rate to 48kHz. Keep track of the visibility of GUIs for LV2 plugins using the externalUI extension. When importing tempo maps from Standard MIDI Files, insert the tempo map at the correct position (not always at zero). When editing MIDI notes, show note length with verbose cursor. Add Mute button to recorder view. Allow clearing LV2 plugin scan info. Always allow playback even if there is no session start/end defined yet. Improve straight line drawing for note velocity. Handle situations where user's value for XDG_CONFIG_HOME is not an absolute path. Optimize tempo map operations for trivial (and overwhelmingly common) case of 1 tempo and 1 meter. Control Surfaces and Devices Numerous Fixes for Console
8.108 Dec 2023 11:47 major feature: http://ardour.org/whatsnew.html
7.523 Jun 2023 23:14 major feature: http://ardour.org/whatsnew.html
6.307 Sep 2020 06:45 minor feature: Disabled routes do not have a label that can be edited . track-header visibility for inactive tracks. . recursive locks when removing procs with a sidechain - #8301. . Improve demessage (tracking down JACK latency updates). . Handle JACK latency callbacks in sync with process thread #8304. . Clean up b5e479d and expose API to queue latency-updates. . Queue latency updates for initial connection. . Cache MIDI generator port latency. . Increase a-fluidsynth polyphony. . double click to expand / contract the track. . When copying a Range of MIDI, special-case the midi start+end in beat . . Likely for occasional crash in editor_regions::region_changed(). . Remove demessage. . Allow Lua DSP scripts to override strict-i/o. . Add cross-fade and A/B switch plugins. . Add a tool to test-load SMF. . LV2 buffersize option interface. . Use signed int for atomic operations -- #8314. . SMF: use glib macros for endian conversion. . NO-OP: backport some libsmf doc and warnings. . SMF: various backports from libsmf PR7. . Use signed int for atomic operations part II -- #8314. . SMF: remove unused variable. . Remove unused libsmf seconds/time API. . Don't allow to run Linux installer on other unices. . Copy state files for backup, instead of serializing. . Do not emit StateSaved signal for backup saves. . Remove delay when engaging record while rolling. . Add deflags to track down #8317. . Add instrument before adding route #8317. . Auto-connect MIDI-Busses to master. . Revert recent auto-connect hack. . Add API to query if an instrument was fanned out. . Overhaul MIDI auto-connect #8317, #8307. . auto-connect thread race-condition. . Another attempt at ing the auto-connect race condition. . Auto-connect MIDI track/bus when output ports change. . Transport: engaging loop play while rolling with no audio tracks now . . Allow export-graph for analysis only. . Allow to skip installing 3rd party plugins. . Initial prototype for session loudness #8
6.211 Jul 2020 03:15 minor feature: Audible blibs due to inconsistent monitor state -- #8275 . Auto-play when locating via drag/click in the editor. . Ripple moving automation points. . Emphasise beat lines;.
6.107 Jul 2020 03:15 minor feature: update german libardour translation . update german gtk2_ardour translation. . Another missing Lua constant (used with preferences). . Update link-panner text. . Avoid "Route" in user visible messages. . Update more messages to prefer "Track/Bus" instead of "Route". . a missing std when using modern VAMP-SDK. . Amend previous commit (no default namespace std). . reverse MIDI playback. . Do not install wscript. . Allow CD marker at session start #8029. . Allow CD marker at session start #8029. . Dummy Backend: add a MIDI Clock generator. . Consolidate TansportMaster implementation. . MIDI Clock slave. . Allow foldback sends to be pre or post fader. . Add foldback bus dulication option. . Add ControlList docs that are relevant for Lua. . WebSockets: LWS_WITH_EXTERNAL_POLL check. . WebSockets: improve libwebsockets 4 compatibility. . WebSockets: comment out a lws_callback case that made clients hang. . WebSockets: leverage LWS_WITH_GLIB. . WebSockets: remove usage of lws constant LLL_USER. . WebSockets: allow compilation with lws 2.1.0. . WebSockets: match message.js constants to C++ code. . Initial vcproj changes for building Ardour6 / Mixbus6 with MSVC. . Further change needed for 'libtemporal'. . Remove non rt-safe deoutput. . Add a bypass/enable port to a-HP/LP. . change action name, label and method names for accessing the tutorial . . new approach to determining correct language to use on macOS (uncompi . . Update unastudia-ardour.colors. . Better version of 1ee2d57 (a hi/lo bypass). . for language choice code on macOS. . Don't crash if ardour vamp plugins are n/a #8161. . provide more info if tasklist threads cannot be created. . s is printf, this is ostream!. . crash
6.026 May 2020 05:45 minor feature: up context-providing translations for gkt2_ardour . up context-providing translations for libs/ardour. . up context-providing translations for libs/gtkmm2ext. . additional ups context-providing translations for gtk2_ardour. . add text to TRANSLATORS file explaining how contextual translation ms . . NSM special-cases. . NSM: Use session's rate when starting JACK. . Remove unused condition (MIDI calibration starts engine). . Display engine setup error #8134. . memory leak when reading MIDI files. . Prevent rare crash at exit in optimized builds. . Allow MIDI learn on inline toggle buttons. . Define Lua constants (used with preferences).
6.0-rc221 May 2020 20:25 minor feature: Revert "(partly): Don't scroll down if no further tracks to . nominal improvement for MTC master: use port latency to adjust sample . . Ignore unconnected ports for latency-compensation. . show MTC transport master latency when computed. . Add flag to allow ALSA backend to fall back to nearest avail. nperiods. . Prepare to allow using ALSA backend with nperiods 3. . Con't work on ALSA nperiod selection (see also d3d120f). . Revise French translation, part 6 -- #8035. . Remove redundant action pre. remove unnecessary call to set_colors(). . tweak minitimeline methods and names to avoid too-early and unnecessa . . remove pointless libs/midi++2/midi++/event.h file. . tweak source code layout docs. . Revise French translation, part 7 -- #8035. . Tabs to space and typo. . Clarify source-tree doc: libsmf is used inside libevoral. . Update Japanese translation for 6.0. . ALSA: set min/max sizes before the demessage. . Allow to refresh ALSA device list - #8051. . Add/remove source(s) in our MSVC project (midi++2). . NO-OP: whitespace. . Add "exit-when-halted" halted option for arlua. . Clarify --help message, punctuation and indent. . do not set declick_amp's gain for declick out during export of MIDI-o . . Tweak ALSA nperiod setting, fallback to nearest. . Update script menu in the wake of 95932f9. . only activate MIDI editing bindings if in actual internal edit mode. . Another step towards nperiod for the RayDay. . ALSA: set start threshold to zero. . Set Arodur's main thread name to include "Ardour". . b9066 (incorrect logic). Restores audio playback from disk. . use PROGRAM_NAME to name GUI thread. . context-providing translation for de_DE where the context string . . update other.po files. . remove deoutput. . Prototype an A/B x-fade plugin. . make with-NLS be the default for Mac builds. . remove unusued SAE build target from osx_build. . tell stdout if setlocale(2) fails. . remove hard to understand and incorrect comment sen
6.0-rc119 Apr 2020 19:05 minor feature: GUI: follow LatencyUpdated signal handler, prevent duplicate updates . rotary control knob mapping. . Atomically reset peak meters #7465. . NO-OP: whitespace. . ambiguous latency check. . typo in API name (1/2). . typo in API name (2/2). . Expose Port::flags() to Lua. . Further tweak ambiguous latency check. . restoring custom MIDNAM #7984. . NO-OP: whitespace. . Remove unused variable. . NO-OP: whitespace. . Move keyboard layout in its own class. . Rename KeyboardLayout::set_keyboard_layout to set_layout. . Styleguide #12 avoid get_ for accessors. . Rename KeyboardLayout to PianoKeyBindings. . use shared_ptr to manage backend port lifetimes (Pulse,ALSA,Dummy,JACK). . up shared_ptr use in JACK backend. . CoreAudio backend to use shared_ptr. . add plugin support for mackie units. . Add option to reset x-run count on record-start. . Add preference to reset x-run counter on rec-start #6706. . portaudio backend to use shared_ptr. . "reset" of shared_ptr. . additional "resets" of shared_ptr. . "" some uses of foo by change the closing chars to " " (w . . false-positive under-run messages. . additional "resets" of shared_ptr. . return value to be a legal null shared_ptr. . missing #include. . missing #include. . missing #include. . Cont'd work on disk reader channel initialization. . NOOP: whitespace. . try some rearrangement to old mingw builds. . more code rearrangement... old gcc/mingw does not allow Enum::Value. . do not initialize shared_ptr with 0. . another attempted for older gcc/mingw. . yet another attempted for older gcc/mingw. . explicit return val for ::get_port_by_name() if JACK has died. . another explicit return val for ::get_port_by_name() if JACK has . . PortEngineSharedImpl callbacks should not be pure virtual. . show ARDOUR::Port destructor with either DE::Ports or DE::Destr . . Revert "PortEngineSharedImpl callbacks should not be pure virtual". . better for port destruction. . improved port cleanup as b
6.0-pre127 Mar 2020 09:25 minor feature: Conditional jump or move depends on uninitialised value(s) . Remove easter-egg. . PI bypass, apply linear pin-connections. . Add Lua bindings for libardour amp's simple gain. . DSP::process_map() plugin-pin I/O map handing. . Add a mute/gate plugin. . Update script to use new process_map() API. . Consolidate loop en/disable calls. . And removing even more unused forward declarations. . Add support for Lua DSP scripts with multiple MIDI outputs. . Add example Lua DSP script with multiple MIDI outputs. . Prevent concurrent loop and punch recording (backend). . Gracefully reject HTTP requests reaching the websockets surface. . Make previous commit 81ecc2b compatible with libwebsockets==2. . Avoid occasional response delay when handling HTTP in the websockets . . Add signals to indicate Punch/Loop constraints. . Removal of punch range. . Punch/Loop GUI control sensitivity. . Dialog default to cancel. . Libwebsockets compat. . Duplicate control-ID when copying processors or proc state. . Double free of undo commands (amend 9e6435f). . Restore visible automation lanes. . Script to bypass all plugins. . Some recursive undo removal. . NO-OP: whitespace, re-indent. . Ensure that regions have sources when saving. . Allow to limit error dump. . Display recent session-load errors in the GUI. . Bail out if Playlist cannot be created. . Convert v5 send state-state. . Lua Amplifier plugin with gain-coeff ratio controls. . 'samples / frames' typo in PBD::stacktrace(). . no pre-release warning dialog if beyond pre0. . Off-by-one, start "Send" names at bitslot 1 (not 2). . Order setting I/O names. . Luadoc build (follow up 2e9ac80, 5794d21). . Allow a-delay to boost output gain. . Previous commit (increase max, not default). . Unfinished for handling desktop/NSM specifying session to load. . Do not include in the Ardour namespace. . Some doxygen warnings. . Update doxygen doc. . UI insert/send renaming. . Polarity invert butto
6.0-pre019 Sep 2017 10:45 minor feature: Namespace PBD::RingBuffer. Update GUI, PBD::Ringbuffer namespace. Add libzita-resampler as lib. NO-OP: whitespace. ALSA Backend: Separate Device Reservation into its own class. Prototype using additional ALSA devices (w/resampling). FP8: call directly into session. Revert "Temporary session-format compatibility (revert before release)". Add support for Latch Automation. GUI support for Latch. Initial support of Latch for some ctrl-surfaces. Add TouchChanged signal (and re-indent). Bump session file format (pre 6.0). Totally crude mockup of new disk_io.h header. Add basic data members and methods for adding an explicit size alloca?. Crawling towards the APIs for separate disk i/o. Merge AudioDiskstream playback code into DiskReader. Two additional AudioDiskstream methods, partially commented out now. Merge MidiDiskstream into DiskReader (playback parts). Move ChannelInfo structure from DiskReader into DiskIOProcessor. Move need-butler from DiskReader to DiskIOProcessor. Remove duplicated (in heirarchy) loop location from DiskReader. Merge almost all audio midi diskstream code, redistribute between D?. Mega-commit to save state of first "it compilesand links" state for s?. Remove Session::track_by_diskstream_id(). Add DE::DiskIO. Remove now-non-existent method from Lua. Remove Diskstream from Track and derivatives; get ardour to actually ?. Random changes required to get an audio track created and transport f?. Fully remove diskstream code. Reinstate input monitoring function. Nothing to do anymore at the Track level when input config changes. Addd more DE_TRACE for DiskIO; set DiskIOProcess::_need_butler mor?. Save processor type for Disk Reader,Writer . Correctly create Tracks, not Busses. Remove deoutput. Get diskreader working, and remove per-track varispeed API and mechanism. no more per-track varispeed. Remove all remaining vestiges of per-track varispeed from libardour. Manual for various XML API changes in master, required after re?. Don't crash when recordi
5.1215 Sep 2017 07:25 minor feature: Revert "Revert ongoing SessionDialog changes for 5.11 release.". Complete Lua-binding dump (after 8eb3b9d). unit-test data (XML attributes changed). Expose enums used in RCConfig and other missing classes to Lua. SessionDialog: hide created-with column in Ardour, use a tooltip. Check major session file format version. Update GUI, session-format notifications, skip unusable in recent list. Catch some exceptions during session loading. Templates: Dim the border around template description text. Templates: dialog tweaks. Templates: unintended commit from deging. Track Templates: initial lua backend support. Track Templates: redesign of Add Track dialog. merge error. NO-OP: whitespace scope. Add an example script for prototyping. Track templates: add some (unfinished) template files. Hide Created-W?. Some initial track templates. Track Templates: shorten some of the track names. Consolidate add/track/route/bus wrappers -- step one. Expose Lua bindings to create/delete VCAs. NO-OP: whitespace. NO-OP: whitespace scope. Initialize an uninitialized variable. typo in 952b8e1. Push user track-templates to the template list. MIDI Quantization for internationalized Ardour. quantization end-grid size. strip / from displayed path when printing bindings to HTML. NO-OP: whitespace. Add luaRef is Boolean. Redesign Session+Route Template Meta Script API. amend e0a83a7 RouteDialog + script details. Remove old destructive API (non layered is a dynamic mode) 1/2. Remove old destructive API (non layered is a dynamic mode) 2/2. Add Lua binding to un/assign VCAs. Update Route-template example script documentation. prh: Added version 1b of my Mixbus Mix controller. Templates: aesthetic tweaks. Templates: first stab at a dialog with tabular layout. Templates: basic support for columns in the script dialog. Templates: Mostly working tabular script. Lua may call C++ functions with throw. Catch them. Lua may call C++ functions with throw. Catch them. NO-OP: whitespace. Revert non "aesthet
5.1116 Aug 2017 05:45 minor feature: Rationalize Editor Zooming: make it harder for user to step into ridi?. Editor Summary: Tweaks. Editor Summary: likely for crash-on-quit. Editor Summary: thinko in initial value. CursorZoomDrag rework: Allow adding tracks w/o running backend. Don't try to rename the route template state dir if it doesn't exist. Set the name of the route in a route template to the template name. Rename the route in a route template when renaming the template. Editor Summary: Don't require user to re-click to scroll + zoom. Select the clicked route in the current mixer strip. Equivalent for #7429 for the mixer. crash when renaming track to an invalid name. Non-layered MIDI recording. Add automation button to VCA strip. Amend c242cbc (VCA automation button). Properly propagate TAV TimeSelection. Increase range of a-comp#stereo release time. OSC make all group dispositions the same. Editor::playhead_forward/backward_to_grid snaps even in magnetic mode. Add missing braces to Editor::cut_copy conditional. both note length setting and display in EditNoteDialog. Remove double-nested reversible command when note editing. Call Editor::abort_reversible_command() in MidiRegionView::abort_comm?. Rework time info box updates on region selection change. Time info box updates its length display correctly over a tempo change. Indicate musical position lock style of regions and locations using B?. Check for identical meter positions in old sessions by beat rather th?. various wrt BBTRulerDrag. Remove duplicated tempo curve colour change when dragging. Only add a new tempo or meter on click if the primary modifier is pre?. Disable tempo end/twist drag for meter-locked tempi. time selection undo for multiple time selections. Cropping a single region to time selection works for multiple ranges. Rework region selection XML. incorrect double-snap when moving audio-locked tempi. Remove redundant beat arg from TempoMap::add_meter. Move some duplicated replace/add tempo section code. TempoMap : Remove old so
5.1016 Jun 2017 06:05 minor feature: It might not be obvious why... but 'ARDOUR::ControlProtocol::name()' ?. OSC: combine two identical if() statements. OSC: added automation name feedback. Set Display Name for OSX/macOS. remove unused variable. OSC: Add /strip/fader/touch. MCP: map the well-known EQ knobs more explicitly, not heuristically. MCP: with strip "select" buttons that stayed stuck on. OSC: Add fake timeout based touch. OSC: Catch case of surface sending fader move before touch. libhid compile with /recent/ libc (GNU_SOURCE). OSC: c++98 mistake. OSC: Further so multiple controls can touch at once. failure to laod old tempo maps. Remove dead assignment in MiniTimeline::draw_edge. Remove dead assignment in Editor::metric_get_bbt. Use correct variable in BasicUI::jump_by_seconds. Use braces in BasicUI::jump_by_seconds(). Use braces in BasicUI::jump_by_bars(). Remove dead assignment in Editor::export_audio(). Remove unused header file in gtk2_ardour. Tempo sections with a BBT start XML node are never ramped. Sort tempo map after legacy sections have been assigned a pulse. Remove old jack_utils.h header that was moved to the JACK backend. Accommodate recently removed source(s) in our MSVC project (gtk2_ardour). OSC - make /strip/list accept a parameter like everything else. OSC add feedback for extra comp and eq controls. OSC: Added lpf and hpf controls for freq,enable and slope. OSC: return value for successful touch. Include ParameterDescriptor in read-only control output. Implement basic AU parameter-printing. Pretty print control-outputs in generic-UI. Always create a deep copy of MIDI regions when copying playlists. Use correct property names for Editor transport controllable state. Use correct property names in Meterbridge::get_state(). Remove attempt to retrieve invalid Meterbridge properties. Use correct names when setting MidiTrack properties. Use correct property name in generic MIDI surface. Remove normalization of property names from libpbd xml code. Use string concatenation and PBD::t
5.915 May 2017 09:45 minor feature: Use PBD::to_string instead of std::ostream when setting up video serv?. Use PBD::string_to/to_string in IO::find_possible_bundle. Remove unused header include in ARDOUR::Amp source file. Use PBD::string_to/to_string when de/serializing in AutomationList class. Use PBD::to_string() from pbd/string_convert.h in JACK utils. Use PBD::to_string() from pbd/string_convert.h in ardour ALSA utils. Use PBD::to_string API from pbd/string_convert.h in AudioTrackImporter. Use PBD::to_string API from pbd/string_convert.h in AudioFileTagger. Use PBD::to_string/string_to in ARDOUR::ElementImporter class. Use XMLNode::get_property in ARDOUR::ElementImporter. Use PBD::to_string from pbd/string_convert.h in ARDOUR::ExportFilename. Use PBD::string_to/to_string in ARDOUR::user_config_directory_name(). Use PBD::to_string from pbd/string_convert.h in ARDOUR::VCAManager. Use PBD::to_string from pbd/string_convert.h in WaveView decode. Use PBD::to_string() from pbd/string_convert.h in ControlSlaveUI. Use PBD::to_string from pbd/string_convert.h in ExportTimespanSelector. Use PBD::to_string from pbd/string_convert.h in MeterStrip class. Use PBD::to_string from pbd/string_convert.h in MixerStrip class. Use PBD::to_string from pbd/string_convert.h in RouteTimeAxis. Use PBD::to_string from pbd/string_convert.h in SoundFileBox class. Use PBD::to_string from pbd/string_convert.h in VCAMasterStrip class. Use PBD::to_string() from pbd/string_convert.h in VCATimeAxisView. Remove PBD::to_string() function from pbd/convert.h. Use std::string::operator+() instead of string_compose template in Ro?. Use std::string::operator+ instead of string_compose in VSTPlugin. Use PBD::to_string() in LV2Plugin instead of string_compose for state?. Use PBD::to_string to set state-dir property in LV2Plugin. Add additional PBD::string_to/to_string specializations for PBD::ID. Use PBD::to_string in AutomationTimeAxis instead of boost::lexical_ca?. Use size type for Playlist sort id as it is serialized. Use PBD::string_t
5.804 Mar 2017 06:45 minor feature: Crash caused by thinko in 123fcf3. Crash caused by trying to connect monitor section before it has p?.
5.727 Feb 2017 15:25 minor feature: Update Japanese translation. credit where credit is due. missing position property in MidiRegion::clone(). 'snap to beat' havoc-causing misplaced bracket. latest Czech translation for libs/ardour, from Pavel Fric (December 2?. remove unused background expose. Update scripts for API change in 59daffe. update email address. new implementation of move-selected-tracks. reinstate ensure-time-axis-visible after move-selected-tracks. Prepare record with count-in action. GUI action Transport/RecordCountIn. Clarify session property (now that there's an action). Reset window-size when switching between custom and generic plugin UI. lua-doc (Null pointer c'tor doc). update luadoc tool (new manual website system). Add missing bindings (after 59daffe). Update Lua script - API change after 59daffe. Another update for Lua-documentation (new manual.ardour.org). NO-OP: whitespace. Save/restore location clock mode. Separate MSB/LSB MIDI Bank select. unconditionally set region quarter note in set_position(). Don't copy-construct MusicFrame, pass const reference. Add Lua bindings for plugin re-ordering. Example lua script to re-order/reverse plugins. loading of 4.x sessions with a missing initial tempo section. Allow bundling suil/qt4,5 using system-wide QT. tentative steps in trying to region action sensitivity. classify all region actions based on how they get a list of regions t?. use leave/enter from track canvas to be the primary driver of region ?. simplify arguments to Editor::sensitize_the_right_region_actions(). constrained region drags across tracks (7242). amend 32248b7 (legacy tempo map). improve logic for region action sensitivity settings. check region action sensitivity from two more places that may alter it. Properly update main window-title. Better solution 213cc1d. Prevent "punch" and "mon" buttons from increasing toolbar height. Toolbar spacing: Add back one pixel of vertical padding, and preserve?. route ordering (mixer TV lacks master-bus). initial order-keys when
5.611 Feb 2017 10:25 minor feature: GUI: use new preroll-rec + trim mode. Update monitor section controls when channelcount changes. Relax monitor-section processor channel restriction. Allow to change metronome level via mouse-wheel. Metronome level preference display. Add delete x-run marker script. Remove use of boost::optional to define "undefined" Canvas::Rect, and?. Ancillary change related to removal of boost::optional. Scale default Atom Ringbuffer size with samplerate. Oddities when replacing VST-presets. Add a note. Plug a memory leak (recent session list, session info). Yet another pane pain: allow deleting children using forall_vfunc. Plug some libardour memory leaks. MIDI leaks -- the Controllergate conspiracy debunked. Remove cruft. Free some one time alloc of the UI (cleaner valgrind output). Plug some mixer memory leaks. Breathe at exit: allow event-loops to clean up. Free dead request-buffers. Reap invalidation records. Leave some notes about memory-leaks. Elaborate valgrind options. a -Wformat. Remove cruft. Extract program version that a session was created with. Update UI, new info API, display created_version in tooltip. Allow Lua bindings up to 10 args. Instrument channel option when adding track. GUI follow up for new-MIDI-track API change. Instrument insert options: Add GUI part to immediately fan-out multi-out instruments on track cr?. Update bbe62da - use last-modified-with, strip git-rev. Show last modified in recent-list. Update metronome tooltip on gain change. Translatable Metronome tooltip, formatting and typo. Don't inhertit "last modified" for snapshot. Parse modified-with for up to 5 snapshots. SlavableAutomationControl::get_value(), if doing automation playback,?. Amp is the one place where we generate a per-sample vector for automa?. Remove decruft from wscript for push2 that breaks with python3. Use SSE/AVX for scaling gain automation buffer via masters' value. Don't repeat-hard-code names for 3 automation types. LuaBindings: prefer shared_ptr over weak_ptr. Lua ad
5.501 Dec 2016 11:25 minor feature: Midnam replacement: Extend Mixbus' "Safe Mode". Crash when instrument instantiation fails on track creation. OSC: Make Aux buses able to be separate. Update lua script to follow API change (bb459a2). Prevent infinite loop when calculating tick marks on low zoom levels. LTC-generator 24h wraparound. Make ControlProtocolManager actually handle control protocols that fa?. Drifting Master hopefully for real this time. OSC: default strip types to include Auxes. One more piece to the moving master puzzle. LV2 state:StateChanged URI. Set session dirty if tracks are reordered by user. Make auto track naming make a bit more sense. Honor VST "Synth" Category for now. Remove dead code. Support multiple readers for MIDI source/model. Another lua DSP example. Parse PortGroups into Plugin::IOPortDescription. Grow luabindings. Prototype script to fan out instrument outputs to busses. NO-OP, explanatory comments. C++ implementation of fan_out_instrument.lua. Don't ship fan-out instrument lua script (but keep it as example). Add AU support for output-channel/bus grouping. Check and link to the pangoft2 module with a mingw build if it exists. For conflicting definition of _xgetbv with mingw-w64 = 5. Use better deoutput in PortaudioBackend. #include in a couple of places. Revert "update lua script to follow API change (bb459a2)". Refactor tempo api, include quarter-note distance in frames method. MidiRegion _start/_length beats are frame based only when lock style ?. Rename Region pulse to pos_beats. use new beat distance api where req?. Clamp setting tempo via vertical drag. Add some documentation for TempoMap. Remove public pulse methods from TempoMap. Remove remaining frame api from TempoSection. More documentation in tempo.cc, constant in pulse_at_tempo_lo?. Tempo.h reorganization. should be a no-op. Remove unused TempoMap::tempo_at_beat(). implement unused tempo_at_qu?. Lock error in empoMap::quarter_note_at_bbt_rt(), expand constant ?. More tempo documentation. Remove comment
5.402 Oct 2016 19:25 minor feature: Add support for LV2 #coarseBlockLength and #enabled. Update a-plugins to use official lv2plug.in URI. Give the Windows MMTimer test a better chance of passing. Add test for PBD::canonical_path on Windows using utf8 strings. Copy UTF-8 test strings from libpbd tests into libardour test utils. Add test to create new Sessions with localized names and reopen them. Move PBD::canonical_path to pbd/file_utils.h/cc and reimplement for W?. PBD::canonical_path will no longer throw so change test. Add API to create tar.xz archives. Fully restore ARDOUR::SoloControl state. Fully restore ARDOUR::SoloIsolateControl state. Fully restore ARDOUR::SoloSafeControl state. Restore ARDOUR::MuteControl state. Initial support for archiving sessions. GUI support to archive session. Add missing files. LV2 State Flags for Atom:Path. Add a SndFileSource c'tor to create.flac encoded file for archiving. Add API to change FileSource path in-place. Add a static flag to force writing LV2 state. Add option to flac encode audio when archiving. GUI updates for archiving sessions. Report archive encoding progress. Update Archive GUI: expose audio-encoding, set progress text. Gain controls are supposed to be "gain-like". PortManager::silence() should not clear data in AsyncMIDIPorts. Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour). Remove _midi_regions_use_bbt_beats from Session, _start_pulse and _le?. Where drawing long notes placed the new note on the previous ?. Make bundle DSP URI configurable and version/variant independent. a typo. Add an option to exclude unused Audio Sources when archiving the session. GUI option to Exclude unused sources. Update default URL to follow harrison website restructuring. Detecting.flac format. Hide unfinished "Archive" feature for 5.4 release. Match new with delete . Adjustments to build nascent push2 surface support. Various for push2 support. Now setups video display when enabled. Remove duplicate/unnecessary header inclusions. Push2: po
5.331 Aug 2016 01:05 minor feature: Ardour 5.3 is almost entirely a bug fix release that corrects a number of issues noticed and corrected since 5.1. There was no 5.2 release, due to a mistake during the release process. Fixes: Ensure click free bypass for all a-* plugins. Enable normal operation when using an audio interface on OS X that is split into two "halves" (playback and capture), both with the same name. The Behringer UMC22 is one such device, but there are others already known to use this wierd and poor design. Our assumption is that the device(s) do not use the same sample clock for playback and capture. Improve layout of a-eq GUI. Update CC automation menu on when track selected channels change. Building with support for Windows-VST on Linux now works again. Correct "focus-on-clock" behaviour (bound to keypad divide key by default). New Stuff: Extend lua bindings (processor selection, plugin-info). Single action/button punch in/out feature (available for control surface use or via shortcuts).
5.126 Aug 2016 06:25 minor feature: allow to manually override gcc ABI selection in the installer. path to glibmm that we check. check for null pointer in Locations::remove(). revert 388a8fc; prefer gcc4 if we can't determine the ABI. Another step towards gcc-ABI detection when installing as root. add RMS region normalization option. tweak strings now that 5.0 is out. Nobody expects the LV2 inquisition!. Add "Marker Toggle" #5193. add nstewart to authors. Allow negative return in TempoMap::beat_at_frame() and its exact_ var?. Audio-locked midi region. Always send start property changes when a midi region trim alters pos?. Ensure positive length whan drag-adding new midi region. Ensure BBTRulerDrag operates within the tempo map. Ensure RelevantModifierKeyMask is updated on each modifier change. Resolve potential ambiguity between the constraint modifier and the c?. User Interaction pref shows the push points modifier in the 'beginnin?. Add a new modifier combination that allows overlap with snap-related ?. Choose some non-overlapping defaults for User Interaction modifier keys. Sync User Interactoin tooltips with new default settings. Remove assumption that the meter starts at frame 0 in Editor::apply_m?. Don't call any Transmitter from realtime context. change PBD::Transmitter code to use PBD::Signal not sigc::signal,?. edit text regarding the "required" nature of JACK during installation?. Expose Stripable Color Ordering API to Lua. Enforce rounding to beat as = 0.0. frame-based beat calculation in MidiRegionView::snap_frame_to_gri?. Midi region ghost note uses beat-based note time calculation. Add missing line feed in midi_region_view.cc. allow constrained-drag of MIDI notes to work. Re-enable luabridge addProperty(). expose SessionConfiguration as lua bindings. allow for whitespace in XDG_DESKTOP_DIR. add some missing enum bindings (for config variables). extend lua-doc to show properties. turn comments into doxygen doc. copy/paste typo in bc0bb6c. Also send lv2:timePosition whenever BBT or Temp
5.013 Aug 2016 04:27 major feature: Ardour 5.0 is now available for Linux, OS X and Windows. This is a major release focused on substantial changes to the GUI and major new features related to mixing, plugin use, tempo maps, scripting and more. As usual, there are also hundreds of bug fixes. Ardour 5.0 can be parallel-installed with older versions of the program, and does not use the same preference files. It will load sessions from Ardour 2, 3 and 4, though with some potential minor changes.
5.0-rc210 Aug 2016 08:25 minor feature: thinko-typo in SoloControl::soloed_by_others(). initialize uninitialized variable. whitespace. OSC: MB spelling mistakes stopped compile. OSC: eq bands off by one. GenericUI: replace ComboBoxText by ArdourDropdown. GenericUI: only connect one PropertyChanged callback. GenericUI: move up filepath property handling. GenericUI: add a sanity-check for FileChoosers. GenericUI:Β don't add all inputs to automation vector. GenericUI: replace early return by an else. GenericUI: remove duplicate connection to signal. GenericUI: replace if() by assert(). GenericUI: disable super rapid timer for input controls. GenericUI: Show automation UI for dropdowns. GenericUI: Update all input controls on preset load. OSC: make send enables work in MB. 2016-07-29 Update zh.po for Ardoru 5.0. Don't compress linux bundle, compress installer (with xz). make makeself compression options optional. prepare installer for multiabi bundles. Make monitor detection reuse the port name translation. Update French translation. and now with proper bash syntax. yet another multi-ABI bundle installer. Update Spanish translation. Update clear-gray-ardour.colors. Use S_ macro when comparing modifier names in User Interaction Prefer?. Update clear-gray-ardour.colors. validation of midnam files. Add some controls for the Waldorf Blofeld. possible ringbuffer overflow. Support LV2 log trace messages. Support thread-safe LV2 state restoration. state features array. Remove duplicate setters that don't affect the outcome. Remove redundant condition. Be more tolerant to missing values or errors in io_config(). make Session::get_remote_nth_stripable() ignore hidden stripables unl?. ptformat: Decrypt ptf files exported from ptx sessions. include XT plugins with Ardour bundles and x42 on OSX/Win. if we can't determine the gcc4/5 prefer the new gcc5 ABI. add a wrapper to launch the vst-scanner manually. add support for VST default values (instantiation time value). workaround changes in glibmm 2.49.x. add a "Pin Manage
5.0-rc130 Jul 2016 02:05 minor feature: Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour). With solo-in-place. do not delete MIDIControllable when dealing with pending MIDI Contro?. a more reliable/robust/less complex version of previous commit. Properly handle meter channel count changes. Invalidate meter-color cache when midi channel count changes. Remove the temporary note group in MidiRegionView, update start trim ?. Make Region's _beat a PBD::Property. Add a lua timer callback signal. Add a script to exercise varispeed playback. Retain desired samplerate when switching backends. Rework FFT-graph, add pointer-position annotations. Add a ToDo note for after string-freeze. Make the trim knob on busses show only if there is audio. Kilo is a lower-case 'k'. Export rate formatting: Some more (untranslatable) lower case kilos. Gtk2_ardour: update UK English localisation. Libs/ardour: update UK English localisation. OSC: Make pan controls work properly with MB too. Prepare region RMS (loudness) normalization. Some spelling inconsistencies. Plugin Analysis: show numeric values on mouse over. Frequence display for plugin analysis mouse over. Crash in preferences dialog if lv2-extended is not defined. Add a timeout to flush_pending(). Add some flush_pending timeouts. The endless quest to plug memory leaks -- episode 378. The endless quest to plug memory leaks -- episode 379. Plugin spectrum analysis: plot A/B. Improve shuttle control response when grabbed. Another attempt to playhead position with varispeed. 32bit compat (amend 90a67d0). Make a right click on metronome really show click preferences. Add initial midi sidechain if plugin has one. Add Sidechain change handler for automatically added initial SC ports. Factor out and simplify the search by components in options tree. When showing a prefs pane, select the row in the tree. Add missing locale guard for luadsp preset loading. pt(_BR) update for gtk2_ardour from Marcelo Teles. OSC: Remove redux control. OSC: forward detection to in
5.0-pre124 Jul 2016 17:05 minor feature: Ordering thinko in note selected colour. Quick to get trim working again (bahaving oddly during trim right?. Improve performance of automation range moves. Show correct bbt representation of region length in region list. Make TempoMap::bbt_at_frame() more efficient. Temporary work-around for note colour. Add Note::set (Rect) for optimisation purposes (minimise begin/end ch?. Use Note::set (Rect) for speed improvement when rendering notes. Avoid the use of dynamic_cast in TempoMap for performance improvement. Only update midi regions having a playlist after tempo map change, fi?. Exact beat for added regions. Restore earlier midi region trim display. Note trimming over tempo changes, correct note length properly wh?. Make bbt ruler visible in default session. Remove extra ContentsChanged signal on tempo map change. Editor region list only updates columns that have changed. AudioRegionView - don't do coverage frames unless we're in stacked mode. AudioPlaylist doesn't double-notify that contents have changed if bou?. Experimental patch to ensure playback buffer bounds use minimal beat-?. Use frame-based (non-exact) beat calculation to set new start in midi?. Bad comment. Back to using exact beats for midi region start_beats calculation whe?. Broken meter manipulation in exact_beat. Indicate meter frame even when adding a music-locked meter from the gui. Check meter/tempo section exists in copy drag. Fail properly when adding a new audio locked meter's tempo. Stop passing references to things that may disappear when a metric se?. Missing tempi recompute, improve adding meter/tempo failure. Long-standing spelling. Tempo map updates. Simplify Editor::mouse_add_new_meter_event() a bit. Use exact beat when adding midi notes. Midi note resizing uses exact beat. Missing note divisor when creating regions, ensure an existing mu?. Always set the musical position in Region::recompute_position_from_lo?. Edit note dialog. Minimise duplicate calls to CairoWidget::set_dirty() in the
5.0-pre002 Jun 2016 13:05 minor feature: Make GUI fader positions reflect VCA master values. Add GainControl::slaved() predicate. Rename GainMeter::gain_adjusted() to GainMeter::fader_moved() to be m?. Adjust logic for slaved faders, not necessarily correctly. GUI modifications to improve VCA strips and their placement in the mixer. Restoration of editor pane positions. Add VCAMasterStrip::set_selected(). Probably get the design of VCAs basically correct: use a per-master r?. Revert GainMeter back to simpler code now that VCA model appears correct. Change master-record management to use std::map to avoid const iterat?. Ensure that GainControl::get_value() never returns Config- get_max_?. Add solo/mute logic to VCA masters. Add solo/mute controls to VCAMasterStrip. Add GUI support for slaving VCAs to other VCAs. Ambiguity in VCA constructors. no self-assign for VCA masters. Incorrect selection of all strips/tracks at opening. Deadlock caused by VCA= VCA slaving and set_state(). Correctly restore VCA-VCA slave/master relationships at session load ?. Update VCA assign buttons to show status for VCA strips. Redesign Route and VCA objects to inherit from ARDOUR::Stripable. Use redesigned Route and VCA object architecture/API. Use redesigned Route and VCA object architecture/API. VCA solo and mute controls need to call AutomationControl::set_value(?. Save+restore VCA counter value across instances. Add required header. Don't increment actual VCA counter when saving session state. Move VCA assignment up to Route level. Move vca assignment up to the Route level. Session API changes to enable VCAs to set soloed-by-upstream on assig?. Remove VCA active button. Trivially change API of GainMeter but more importantly don't show met?. Follow session track-number policy in mixer strip, as is done in the ?. GUI tweaks for VCAMasterStrip, including renaming. Start adding a context menu for VCA strips. Change master records in GainControl to use AutomationControl. Redesign control slave/master system, move code from GainC
4.719 Feb 2016 12:45 minor feature: Initialize Editor::clicked_selection to prevent programming error dia?. Center the playhead for stationary_playhead playback. Use visible playhead location for editing during a jog-wheel event. Editing from a control surface must have the ability to ignore mouse ?. Make Send button light appropriately. Mackie: improvements to display when switching subview modes. Prevent bank/channel switching past the end of the available routes; ?. Buses and Auxes are slightly different view-filters in Mixbus. Device-list update concurrency. Add new API to Route to get name of "well-known" nth-send. Mackie: display of send level value. Mackie: use Route::send_name() rather than Route::nth_send(). Mackie: don't overload "Audio Instruments" and "Instruments" buttons. Mackie: Global View button function. Added Behringer X-Touch device files. Mackie Protocol: HasSeparateMeters flag for X-Touch devices. Another attempt ing crash at exit on windows. Mackie: redesign display logic entirely. Button::AudioInstruments should not be lit without good reason. Mackie: in Sends subview mode, the enable control for the send should?. Add new Route API ::master_send_enable_controllable() to provide gene?. Mixbus: vpot press in non-subview mode should toggle master bus send. Mixbus: don't assert(ch_post()) in case we use various methods on "od?. Mackie protocol: More LED indicator. Mackie: make group button (appear) to do something. NOOP: change brace placement to avoid confusing emacs. Mackie: if a subview mode is not OK because there's no selection, sho?. Modify Selection API to provide (default-valued) "with_signal" argume?. Use new selection API to avoid double signal when a track or tracks a?. Mackie: initial attempt at making automation-related buttons set fade?. Mackie: basically (fully?) operation fader automatio control for firs?. Mackie: remove mention of "blinkers" concept. Surfaces with separate meters should meter even when stopped. Add track select buttons to Launchkey map. Mackie prot
4.612 Jan 2016 03:16 minor feature: Compilation of debuilds. Warning message typo. Name ALSA midi ports after device.
4.420 Oct 2015 20:45 minor feature: Update AU GUI positioning and resizing. Avoid calls to Glib::ustring
4.315 Oct 2015 10:05 minor feature: Add missing space. ..and another packaging typo. Accept/ignore --gcc5abi option during packaging. Mixer group-tab width - #6572. Update semantics of PBD::remove_directory(). Export directory browser dialog when clicking on 'Cancel' butto?. LV2 state cleanup, patch from deva. Sort ports in state-save. Add deva to authors. Mixer-strip name context-menu cleanup. Remove cruft. Remove outdated limiation. Long options of gcc-glibmm-abi-check. Add new action and loop marker menu item for setting up loop record. Session::disable_record() should work whether we are in loop mode or not. Loop record is a feature whether or not loop-is-mode is true or not. Move code location where loop playback is cancelled when stopping. a long-standing arising from a change to some logic which rev?. Minor for possible off-by-one logic when at/near the end of the l?. a few new DE_TRACE calls related to session transport state. The logic of the GUI "toggle roll" action as it pertains to loop ?. When editing an audio clock, swallow illegal keys rather than allowin?. Change the way the audio clock cursor is drawn (somewhat of an experi?. Change semantics of 4th argument to Session::locate to mean "this loc?. Better more reliable checks on renamed, newly created and imported tr?. Get loop recording working when using seam-ed looping. Revert "add new action and loop marker menu item for setting up loop ?. Const-ness. Initialization of reserved I/O names vector. Introduce Ctrl+Shift+Click on lock solo in the mixer. Merge branch 'chaot4-_lock_solo_ctrl_shift'. Change clearlooks style file so that small_entry and related styles u?. BWF USID according to EBU-R99. Revert "change the way the audio clock cursor is drawn (somewhat of a?. Mackie control metering. Set waveform height depending on Layer mode. Midi tracer to show MSB too. is there a better way to make gcc+enumwriter happy?. Split Butler::flush_tracks_to_disk() into two distinct versions with ?. Remove apparently bogus adjustment to capture_ca
4.214 Aug 2015 03:15 minor feature: separate solo isolate into two components (self-solo-isolate and solo?. ctrl-shift-click on solo isolate now enables AND disables solo-isolat?. rework AU scanning/discovery. Possible fix for http://tracker.ardour.org/view.php?id=6332. Revert "Possible fix for http://tracker.ardour.org/view.php?id=6332". prevent multiple concurrent plugin scans. clarify splash message (plugin scan/discover). remove ?Refresh? button in Plugin manager. offer to scan for plugins at first start. merge fix. merge fix again. reworked variant of john?s soundfile locale fix. print name instead of ID for skipped AUs. do not carry out a size check on peakfiles for files still being reco?. Minor changes to ensure that MSVC knows about 'CaptureStackBackTrace()'. OSX 10.5/PPC compat. fix compilation w/o posix_malign. another OSX/PPC fix. amend 7a3280b, fix typo. configure Analysis Plugin. plugin analysis set block-size. copy AU parameters with plugin. use power of 2 log-scale for parameters. fix auditioning on systems with larger disk read chunk sizes. do not call playhead priority (auto-return) code after selections cha?. patches to fix notebook tab tearoff on DnD. bye bye Unix. update system config. VST plugin title. OSX bundle libstdc++ for 10.5 support. amend 674e727. amend a3c21ae, video-server localhost - 127.0.0.1. fix typo in old (pre 10.6) coreaudio API wrapper. OSX: remove unused architectures from xjadeo harvid. avoid llabs ambiguity. amend a73a039, separate VST cache for 32/64bit. signed/unsigned comparison. rename Marker class. don?t bother to set OSX DMG icon on old systems. When peakfiles get opened using a non-glib function (in a non-English?. When saving a session (in a non-English locale) make sure that we use?. When printing an XML related error, guard against NULL pointers getti?. A few more instances of non-glib 'open()' getting used without locale?. coreaudio aggregate device fix for 10.5. VST info: use g_fopen() for Windows compat. tweak OSX packaging. Remove sse optimiz
4.125 Jun 2015 03:15 minor feature: Layering - the return of "later is higher". C/C++ style checking script from erik de castro-lopo, for use in clie?. fix pasted whitespace. whitespace cleanup. add pre-commit hook for optional (but recommended) use. add check for white-space only lines; fix tests to allow for _(...) m?. don't interpret C++ templates with indirection/pointer/reference oper?. catch identifiers ending or starting with _ when checking operator sp?. fix C++ template/operator test. Fix missing undo for audio timefx operations. Fix stuck notes on save during MIDI playback. fix cleanup (code is self-evident). From Yevgeny @ waves. Relative snap. Revert incorrect region_length() definition. Fix typo. Cleanup relative snap code. Relative snap - support magnetic mode (hackishly for now). Relative Snap -make it activated by the tertiary modifier during drag. Clean up drag modifiers. Relative snap now always on - disabled with Tertiary modifier (shift). "Lock" mode is now "Constrained", make sna
4.020 Apr 2015 18:05 minor feature: New graphics engine. Abstracted the audio I/O. Improvements to MIDI editing. A Windows port. Better cross platform support. Ardour now runs on GNU/Linux, OS X and for the first time, Windows. JACK is no longer required, making it easier than ever for new users to get Ardour up and running (though JACK is still usable with Ardour). The user interface has seen a thorough overhaul, leading to a more modern and polished experience.