summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
AgeCommit message (Collapse)Author
2020-02-19when inside Route::set_state() and calling set_name(), call the virtual ↵Paul Davis
method, rather than Route::set_name() Without this, nothing in Track::set_name() is called, which means that tracks created from templates do not get their name set appropriately
2020-02-19fix paren/newline formattingPaul Davis
2020-02-20Force Disk-Reader channel count to match Disk-Writer I/O.Robin Gareus
This handles some special cases where a plugin is added after the disk-writer but before the disk-reader. The plugin may add/remove ports (e.g. an instrument: MIDI to audio, or some stereo to mono processors). However we need to ensure that any data that is recorded will be played back. This is a new take replacing b2bc934e2.
2020-02-20NO-OP: remove old comment and debug codeRobin Gareus
2020-02-19fix compiler warning about dynamic_cast<T*>(ptr_to_T)Paul Davis
This is in a Route method, so it is obvious that dynamic_cast<Route*>(this) will return true
2020-02-13Fix Mixbus well-known filter controls (HP/LP freq)Robin Gareus
2020-02-13Address sidechain-port name uniquenessRobin Gareus
[Re]name sidechain port directly when a plugin is added. Usually plugins are constructed without an Route (owner is unset). PluginInsert c'tor may already create a side-chain port, at the time of construction the sidechain port will be created using the port-name "toBeRenamed". Previously the plugin had to be added to a route using "add_processor", in order to set a unique name, before a new plugin with sidechain could be constructed. ProcessorBox::use_plugins() did that in the correct sequence, however there may have been cases where this didn't work, and Route::add_processors() was called directly..
2020-02-04Fix a potential case where PresentationInfo type flag is not set (see ↵Ben Loftis
comment for details)
2020-01-30Use session-version when loading processor stateRobin Gareus
Stateful::loading_state_version vs. Stateful::current_state_version See also 0a5837ec7111
2020-01-30Cont'd work on loading old route templatesRobin Gareus
This builds on top of 51d2bb: * v6 routes templates/states have a version per <Route> * older route-states are assumed to be from ardour-5 Stateful::loading_state_version 3002, unless specified otherwise
2020-01-29Save/Use state-version with route templatesRobin Gareus
Currently using Ardour-5 route templates (state version "3002") with Ardour6 fails. As opposed to session-templates, Route templates were not versioned. This ensures future compatibility (and may allow to interpret unversioned templates as "3002")
2020-01-11Fix AFL positionRobin Gareus
* update AFL position when preference changes * "after post-fader processors (before pan)" is before the main-out (not at the end). * Fix "immediately post-fader": The amp, when added was the last element. ++after_end then made the iterator point to .end() This likely worked in the past when the monitor send was added immediately after adding the fader/amp before any other processors.
2019-12-16Remove cruft, unused APIRobin Gareus
2019-12-11Fix loading plugin state from sessionsRobin Gareus
While loading a session XML state, set_state must use `Stateful::loading_state_version`. When later copying processor state, `Stateful::current_state_version` is correct.
2019-12-09Fix automation alignment for latent pluginsRobin Gareus
This also solves bi-stable automation for plugins where latency can change due to automation. e.g. cycle 1: run (t): automation (t) = on: -> increase latency cycle 2: run (t-latency): automation (t-latency) = off -> decrease latency repeat.
2019-12-05Fix well-known control LPF/HPF order.Robin Gareus
2019-11-22redesign of declicking and fades around loop boundariesPaul Davis
2019-11-21Use new boost::optional APIRobin Gareus
get_value_or() has been deprecated since boost 1.56
2019-11-08Ignore latency of inactive routesRobin Gareus
2019-11-08Remove unused signalRobin Gareus
2019-11-06Use strict-i/o on master-bus by defaultRobin Gareus
This precludes issues with multi-out-plugins adding an excessive number of ports and changing master-panning.
2019-11-06remove debug messagePaul Davis
2019-10-30Update latency-compensation when re-ordering processorsRobin Gareus
When re-ordering processors, the route's own latency does not change (at first). But it might if sends or plugins with side-chains a involved.
2019-10-30NO-OP: whitespace/commentsRobin Gareus
2019-10-28provide a mechanism to decide if Session::update_latency_compensation() is ↵Paul Davis
being called as part of a callback from the backend. If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
2019-10-23Fix strict-i/o override on session-load (amend 31847f88ef)Robin Gareus
Plugins may override strict-i/o, and in order to know do this the plugin needs to be instantiate first.
2019-09-29Ardour::IO is not latent by itselfRobin Gareus
2019-09-25goodbye USE_TRACKS_CODE_FEATURES and is_tracks_buildPaul Davis
2019-09-25Consolidate and extend "well-known" controls:Robin Gareus
* Add new common strip controls (inspired from Mixbus) * Remove duplicate documentation, document virtual API only. * "azimuth" not "azi"
2019-09-22add const and tweak variable namePaul Davis
2019-09-20Add abstract API for latency compensated sendsRobin Gareus
This is in preparation for MixbusSends that are not derived from Delivery : IOProcessor.
2019-08-26Add signal for foldback send add or removeLen Ovens
2019-08-23Detect monitor-send by instance, not nameRobin Gareus
2019-08-06foldback may be mono don't set panner typeLen Ovens
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-07-02Mixbus uses K14 (not K20) master meter by default (see also 297ed001d)Robin Gareus
2019-07-02Mixbus/master is always using K20 by defaultRobin Gareus
This only affects the meter-bridge, toolbar and editor track-header (Mixbus' mixer is always using DPM, which is always enabled).
2019-06-09Consolidate meter-type state and APIRobin Gareus
In theory different UIs can show different meter-types, so it can make sense to maintain the type in different places. MeterType is a bit-set and PeakMeter implementation provides for this. However, this is not being used, and the current implementation was rather fragmented, cross-connected signals to keep types in sync, allowed inconsistent meter-types in GUI and backend. MeterType is now kept by meter itself, however it is still saved/restored as part of the Route state. N.B. This change breaks the API, various methods have been renamed for consistency.
2019-05-08NO-OP: Unclutter -DGraphRobin Gareus
2019-04-13NO-OP: whitespaceRobin Gareus
2019-04-12NO-OP: whitespaceRobin Gareus
2019-04-12More Ardour/Mixbus codebase unificationRobin Gareus
Note Presentation-Info bits used by Mixbus to prevent conflicts when sharing sessions.
2019-04-12NO-OP: mixbus codebase unificationRobin Gareus
2019-04-07Fix bounce-process: skip all processors before disk-readerRobin Gareus
2019-04-07Bounce process always uses speed 1.0Robin Gareus
2019-03-25Do not create automation when shifting (insert/remove time)Robin Gareus
This fixes a bug when shift() creates automation for parameters that can not have any automation (hidden parameters, Mixbus PRE). The GUI (RTAV) aborts() when it finds an automation lane for a hidden parameter. This also cleans up shift() operations in general. Empty automation lanes should be left alone, no guard-point at zero should be added.
2019-03-20remove "rename_playlist" argument from Route::set_name_in_state().Paul Davis
We no longer find playlists by name when constructing tracks, so the name of the playlist is not relevant
2019-03-17Remove unneeded calls to configure_processors during session-loadRobin Gareus
Those are superseded by b890cf73ad, which is done after all IOChanges have been processed.
2019-03-15Amend 883ee9c2, setup required invisible processorRobin Gareus
This fixes a potential silent master-bus when re-loading a session ("mains_out" may be skipped).
2019-03-06Allow to call set_state() on existing routesRobin Gareus
Delaylines are not saved in the XML and internal-return is an invisible processor not explicitly re-added when the state is restored. They are [re]inserted during Route::setup_invisible_processors(). So this method need to be called after restoring processor state (indirectly via configure_processors_unlocked as needed). PS. During route creation this call happens explicitly and on session load hookup_io() -> Route::output_change_handler() implicitly sets this up.