summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_insert.cc
AgeCommit message (Collapse)Author
2020-04-16Plugin: bypass <> enabled mappingRobin Gareus
LV2 uses "enabled": -1: inactive, 0: bypassed, 1:enabled VST3 has "bypass: 0:active, 1: bypassed
2020-04-16Prefer std::string for `print_parameter` APIRobin Gareus
2020-03-26Display unit-label of VST parameters -- #7938Robin Gareus
2020-03-10NO-OP: use set/clear_flag() API instead of set_flags()Robin Gareus
2020-02-26Fix PI bypass, fix apply linear pin-connectionsRobin Gareus
Previously this could assert(), copying a buffer to itself.
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..
2019-12-14Add Inline Control Port PropertyRobin Gareus
This allows to indicate that a control should by default be displayed inline in the mixer-strip. Previously that was hard-coded for and enabled for send-level controls only.
2019-11-18Fix automation lookup when rolling backwardsRobin Gareus
2019-11-14Fix cycle-end position when not rollingRobin Gareus
When stopped start_sample == end_sample. This fixes accidental automation lookup, as well as plugin time/position information.
2019-11-06fix unconditional note resolution during DiskReader::realtime_locate()Paul Davis
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() - ::get_midi_playback() has already taken care of this. But when not looping, we need this. So, add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-01Handle Lua DSP script load failure (unknown plugin)Robin Gareus
This handles a very specific edge-case: A script that was successfully parsed before, fails load on session state restore.
2019-10-02remove all use of NO_PLUGIN_STATE #ifdefPaul Davis
We determined several years that we should never ever do this, and changed the basis for the free/demo copy because of that.
2019-10-02Amend 903c3ec5a API renameRobin Gareus
2019-10-02Plugin type lookup does not change PIRobin Gareus
2019-10-02Remove unused API (and some MIXBUS specifics)Robin Gareus
2019-09-26rename BufferSet::get* to BufferSet::get_available*Paul Davis
This tries to make it clear what the BufferSet limit semantics really are
2019-08-24NO-OP: commentRobin Gareus
2019-08-20Fix prev commit, state-restore of pluginsRobin Gareus
2019-08-19LV2 extension to override strict-i/o per pluginBen Loftis
This allows mono to stereo plugins to override the default routing and forces both outputs to be connected.
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-03-22Update cAutomationControl values when copying stateRobin Gareus
This fixes a bug that can result in inconsistent session-state when copying plugin state from one plugin to another (via drag/drop ProcessorBox::object_drop, LINK). The underlying plugin state and settings are copied, port _shadow_data is updated, and ::get_parameter() shows the correct new value. However the Controllable was not updated. On Session save/restore the value may have be lost or was inconsistently restored.
2019-03-22NO-OP: reduce scopeRobin Gareus
2019-03-11Use VST's print_parameter() when applicable.Robin Gareus
2019-02-28Fix analysis plugin when using plugin-presetsRobin Gareus
2019-02-28Allow to special case plugins used for IR analysisRobin Gareus
This is relevant for some VST specifics (e.g connected pins) or similar audioMasterCallbacks that use either global or plugin-insert specific data.
2019-02-28Take latency into account when analyzing live signalRobin Gareus
2019-02-20Add unified API to select plugins to show on control-surfacesRobin Gareus
e.g. Mixbus channelstrip should be hidden, also mixbus' built-in effects are exposed as well-known controls
2019-02-17Emit signal when plugin latency changesRobin Gareus
2019-02-16Prepare to allow to disable latency-compensationRobin Gareus
Previously "zero custom/user latency" meant "default plugin latency". This is now saved in a separate boolean allowing a user to reduce a processor's latency to zero. This also prepares for a global switch to use zero latency throughout the whole session.
2019-02-09Fix MIDI-bypass for inplace plugins -- #7722Robin Gareus
2018-12-16Remove cruft: previous set_value_unchecked optimizationRobin Gareus
2018-12-16Optimize plugin-processing for non-automated paramsRobin Gareus
Keep a dedicated list of automated parameters to evaluate in realtime. This fixes a performance issue with plugins that have many controls with only few of them being automated.
2018-12-04Fix logic-error in d1cf2163: hide info for optimized buildsRobin Gareus
2018-12-03Special case Mixbus Chanstrip for load calculationRobin Gareus
These processors don't have a UI, so their load stats are not easily visible. The stats can still be queried via Lua API or DSP-load overview window, so we retain this for debug builds.
2018-11-25Do not allocate MIDI buffers for signal analysisRobin Gareus
At this point in time MIDI buffers are vastly over-sized. They include VST and LV2 event structure. This added about a MB per plugin for no benefit.
2018-11-04Remove C++11'ismRobin Gareus
While gnu-gcc had `std::map:at const` as non-standard extension it is n/a for older gcc on OSX. Surprisingly this const& p() const; performs a tad better as well, likely due to different exception handling. Perhaps it is also worth investigating boost::flat_map<> as replacement for std::map<>, here. Our common case is just a single entry, so using a std::vector emulated mapping might help.
2018-11-04Prefer const references for Pin/Channel mapsRobin Gareus
Another micro-optmization shaving off some ten microseconds for every plugin. Also copying maps isn't RT-safe. This may however cause issue if const map references can change while a plugin is running.
2018-11-04Plugin pin-mapping micro-optimizationRobin Gareus
Prefer std::map::at() over std::map::operator[] to allow const maps. For debug builds, there should probably some try{} catch{} along with this.
2018-11-04Optimize Parameter Control LoopRobin Gareus
For plugins with 10000 Control Inputs, dynamic_pointer_cast<> overhead is significant, here ~2msec (~0.2usec per cast, optimized build, i7-5600U, 2.60GHz)
2018-11-01Create sidechain ports when created from template (#0007680)Johannes Mueller
When a route with a sidechain is created from a template or by route duplication the number of ports of the sidechain are set according to the XMLNode defining the sidechain. Then the names are set according to the name of the newly created route. Thus all the pin connections defined in the template are replicated in the newly created route.
2018-11-01Update names of sidechains.Johannes Mueller
When a PluginInsert is created it does not have an owner right away. That's why a we need to set the sidechains name once the owner is known, in order to include owner's name into the name. Furthermore we need to follow renames of the owner.
2018-10-31Add option to limit automatable control parmatersRobin Gareus
VCVRack VST currently exposes 9999 automatable-control parmaters. This slows down various GUI dropdown lists and dialogs. (even worse: those parameters are not mapped to anything by default). This change allows to limit automatable parameters to a reasonable number, without loosing state of already automated parameters in existing sessions.
2018-10-31Remove duplicate callRobin Gareus
Automatable::add_control() already does insert a given parameter to the _can_automate_list list if it's automatable.
2018-08-15Add API to reset plugin timing statsRobin Gareus
2018-07-31Prepare for non-bypassable plugins (Mixbus channelstrip)Robin Gareus
2018-05-17Collect plugin runtime profile statistics.Robin Gareus
2018-01-30Update plugin classificationRobin Gareus
* dedicated API for classes (effect, instrument, util) * prepare for tags (rather than categories) * prepare removal of per-plugin in_category() API
2017-11-26Remove unused APIRobin Gareus
2017-11-01Wrap automation on loop-position, split plugin processingRobin Gareus
2017-10-04Clean up State API:Robin Gareus
* Processor implement get_state(), classes derived from Processor implement protected ::state() -- as documented in processor.h * likewise for Route, Track: make ::state() a protected interface * removal of "full_state", use explicit "template_save" * use RAII/Unwind to skip saving automation-state