Ardour 5.8

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 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

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 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, 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 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 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 Revert "Possible fix for". 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 - 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.