Future Directions for Ardour

This document is not a roadmap or an explicit plan. It's more just a collection of notes about some of the directions we want to (maybe) go in the foreseeable future.

First, A Guiding Principle

Development of Ardour strives to accomplish the following goal: there should be no objective reason why anyone should not choose Ardour as their DAW. There may of course be subjective reasons for someone to prefer a different DAW (for example: theming, layout, specific details of workflows).

Development Priorities

To put the above goal a bit less formally: statements such as "I find Ardour awkward" or "Ardour is ugly" will generally not impact our development priorities. However "You can't do <X> in Ardour" identifies a potential development priority. And "It's a bit harder to do <X> in Ardour" may also drive our development efforts too.

Ardour development is resource constrained. Most development will be generally guided by a utilitarian principle of bring the most improvement/joy to the most people. However, Ardour developers are human too, so nothing about a utilitarian goal should be seen as preventing time being spent on things that are just fun or scratch a particular itch. In addition, finishing features and workflows that are already partially implemented will always be a priority, particularly when valuable user feedback is available.

In the absence of convincing evidence, we will generally avoid putting developer resources into the ardour.org website and/or our payment systems. While there are a number of improvements that can be imagined there, it is not a productive use of the limited developer time we currently have available to focus on these systems.

Finishing What We've Started

  • Finish cue page
    • Clip recording
    • in-place audio editing
    • in-place MIDI editing
  • More comprehensive click management.
    • Ability to define different sounds for each beat.
    • Ability to place accent on different beats.
  • Take management, including track/region comping.

Big New Stuff (that may need new architecture)

  • Stretchy Audio Regions

    This may be implemented via tracks dedicated to events or combining regular timeline and events (like clips - no playlist, no pre-buffering)

  • Loopy Audio Regions
  • Freeze MIDI To Audio
  • Modulation (as in Bitwig; connecting generators and parameters)
  • Figuring out how/where to include scales/modes within the program
  • Per region plugins.
  • Folder tracks.
  • Plugin templates / FX Rack (group of plugins with given state or preset).
  • Session builder; import things from other ardour sessions.
  • Implement more comprehensive panning.
    • Delay based panning
    • Integrate Ambisonics (maybe).
    • Implement VBAP automation.
    • Identify (and name) the places where panning/positional information must be applied (e.g. outputs from ardour, summing points in busses), and deliver positional information along with audio data to them, then pan according to the i/o configuration.

Leveraging What We've Got

  • Website to collect Lua scripts for Ardour's download manager
  • Site for templates and/or demo sessions for Ardour's download manager

Things Nobody Has Done Properly (yet)

  • Considerations for non-western and/or non-12TET composition
    • non-ET modes
    • !12 tone modes
    • other notions of scales (e.g. jins in maqam, indian raga (direction matters))
    • other notions of rhythm
      • world folk traditions e.g 3 + 3 + 2 & long,long,short
      • Indian tala
      • Balinese/Javanese gamelan
  • AI integration
    • Wherever the future takes us.
    • Prompt to create MIDI or Audio data, and import generated content.
    • Host/Plugin interface, provide context for AI plugins.
    • Use AI to make Ardour feature complete :)

Keeping Up With the Rest

Integrating With Other FLOSS Stuff

There are lots of interesting possibilities that could arise from closer integration with other FLOSS audio/music tools, including plugins and even entire applications. However, there are also ethical issues to consider in doing so.

  • FX plugins
  • Instrument plugins
  • Huge plugins (e.g. Cardinal, PlugData)
  • MuseScore

Control Surfaces

  • Improve surfaces code, add surfaces, extract more generic/abstracted code model to make adding surfaces easier by sharing more code
  • Launchpad Mini and X
  • Akai APC 64

Quality of Life

  • Cloned regions (audio and midi).
  • Improved Media management.
  • Performance.
  • All plugins on/off button.
  • Region colour management - See Mantis entry 2755 ( http://tracker.ardour.org/view.php?id=2755 ).
  • Allow the loading of audio directly to the time line from any file type and of any sample rate without conversion i.e. real time SRC.
  • In the Import Dialogue add a waveform view of the file being auditioned. Have a playhead on this view and allow clicking to locate within the file.
  • Performance.
  • Option for recording stereo (or any multi stream) tracks as one file rather than split into two (or more) files.
  • Allow media location searching to optionally traverse the file system into lower levels.
  • Allow track/mixer strip reordering by dragging directly on track headers or mixer strips, including dragging multiple non-contiguous tracks/strips and have them become so on dropping.
  • Allow region sources to be changed dynamically.
  • Allow regions to be edited by an external tool.

Stuff We Don't Really Want To Do

  • Increase independence from GTK+
    Requires implementation of:
    • File browser
    • Text entry
    • Menus
    • Tree/ListViews
  • Performance.
  • Finish "operation applies to selection" - no more clicked_regionview, clicked_trackview etc. as targets.

Remnants of the old "post-3.0" list

An old and venerable list, from the days right after the release of Ardour 3.0. Some items from this list have been moved into the sections above. The ones that remain here are either unclear in their meaning, or provoke a "Hmmmm...." response.

  • Improved crossfade manipulation, including animating of crossfades as regions are dragged.
  • Revisit scrubbing
  • Record path management, including the ability to set a record path for each track, independant of the session record path.
  • Make vari-speed controls more usable.
    • Separate shuttle functionality and playback speed - Playback speed should be a constant between transport starts and stops. The current control for shuttling forwards and backwards can remain, but always return to either 'Stop' or the currently set 'Playback speed'.
  • Multi-resolution peak files. Including clipping indication data
  • Copy/paste of regions and/or chunks between instances?
  • Tear off groups for mixer strips.
  • Automation overhaul - Including global Automation on/off control.
  • Make Aux busses more aux-like - both visually and functionally.
  • Define more precisely what happens when chasing external timecode (MTC, LTC, JACK) and the timecode varispeeds or stops.
  • Define more precisely what happens when EBU, SMPTE or Film timecode goes outside the legal range ie 00:00:00:00 -> 23:59:59:23/24/29. Examine the two cases of either chasing external timecode or not.
  • Comment/Remark tracks.
  • Scenes - Implement Scene storing and recalling, including scene sequencing (send MIDI messages when rolling though a marker).
  • Theme manager Window showing the widget/elements of the UI that the colours are being changed for.
  • Larger panning control window open-able on each channels panner, allowing finer control and more info. Particularly for the new stereo panner.
  • Add transport keys and a clock to the monitor section.
  • Rework sorting of the region list in the Editor Notebook Tabs.
  • Pre and Post roll.