summaryrefslogtreecommitdiff
path: root/libs/ardour/vst_plugin.cc
AgeCommit message (Collapse)Author
2020-04-16Prefer std::string for `print_parameter` APIRobin Gareus
2020-03-26Display unit-label of VST parameters -- #7938Robin Gareus
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-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-03-11Use VST's print_parameter() when applicable.Robin Gareus
2019-03-11Remove generic parameter-printerRobin Gareus
This has been superseded by value_as_string() along with meta-data from parameter-descriptor, which is supported by all standards, except VST.
2019-02-17Clean up Latency API (Processor vs Plugin)Robin Gareus
Plugins are only a source of Latency (Plugin delay). The API to query, signal and override Latency is managed by PluginInsert.
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.
2018-11-07Consolidate VST Plugin InfoRobin Gareus
This unifies common PluginManager VST code to construct *VSTPluginInfo and also provides a dedicated is_instrument() method for VST plugins.
2018-11-04Optimize Plugin connect & run API, use const mapsRobin Gareus
2018-10-22Sort VST factory presetsRobin Gareus
This is more of a workaround than a fix. Simply by forcing the URI to be sortable (VST-user presets are sorted at the end). This eventually needs a deeper cleanup and API consolidation PluginInfo::get_presets(bool) returns an ordered std::vector. However this API is only used in a few cases where the plugin is not instantiated. PluginInfo::get_presets(bool). The problem is Plugin::get_presets(). The method returns information that was previously cached by Plugin::find_presets() in std::map<URI, ...>
2018-10-21Potential fix for lost VST MIDI eventsRobin Gareus
Ardour's VST MIDI buffer API does not yet implement offsets and limits. When a cycle is split, the same midi-buffer is used for all sub-divisions leading to duplicate, offset, events.
2018-10-21Avoid use of 'std::to_stringChristopher Arndt
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2018-10-21Add plugin version and parameter count to VST user presetsChristopher Arndt
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2018-09-25VST-state, set/restore program before loading chunk.Robin Gareus
This may fix some issues with VST state being restored incorrectly when a plugin-preset was loaded.
2018-06-04remove aeffectx.h; use vestige.hPaul Davis
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-07-08Don't use VST ->user points, prefer host-reserved ptrRobin Gareus
Apparently "user" is for plugins (not hosts) to use.
2017-07-06Consistently set parameter steps.Robin Gareus
And it's actually mostly moot. interface_to_internal maps any range to 0..1. The GUI could just hardcode min/max 0, 1 and steps 1/30, 1/300. Except for controls that have explicit range-steps & ctrl surfaces.
2017-06-21Fix VST default value. query once at instantiation time.Robin Gareus
2017-06-21Consolidate ParameterDescriptor settings+rangesRobin Gareus
2017-06-21remove min/max unbound -- LADSPA special case.Robin Gareus
This explicit case should never have existed in the first place. Plugins can always implicitly exceed the range and are expected to cope with out-of-range values (e.g. meters when fed with a peaking signal may return an out-of-bounds value)
2017-05-10Bump VST param-name length limit to 128 bytes and centralize definitionRobin Gareus
The official VST spec says 8 bytes, JUCE uses 24 + 1, and there's anecdotal evidence that some VSTs use up to 100 (which apparently works in many hosts).
2017-04-25Assume VST chunks are portable (Mac, Linux, Windows VST)Robin Gareus
2017-04-19Use std::string::operator+ instead of string_compose in VSTPluginTim Mayberry
2017-04-19Use XMLNode::get/set_property API in ARDOUR::VSTPluginTim Mayberry
2017-03-12Prepare for graceful case-by-case fallback of VST BypassRobin Gareus
VST's effSetBypass may fail even though a plugin CanDo "bypass", and it can be case-by-case (depending on plugin-settings). This codepath is not yet active, pending testing.
2017-03-07Rework VST initialization:Robin Gareus
Set the AEffect* plugin pointer before calling effOpen. effOpen may call back into the host (masterCallback) and invoke actions which depend on _plugin (eg. to call back into the plugin again)
2017-03-06Add support for VST effSetBypass #7266Robin Gareus
This mechanism re-uses internal abstraction (plugin-enable). Other plugin-specs designate a control-port, for VST we 'emulate' a control-port. There is still debug-output to stderr, here while testing.
2017-02-28Tweak/optimize VST callback:Robin Gareus
The audioMasterAutomate callback from plugin to host does include the parameter-value. Previously there was a redundant call Plugin::parameter_changed_externally() -> get_parameter -> VSTPlugin::get_parameter() back into the plugin to query the value. calling back into the plugin from the callback, may explain oddities and/or crashes with some VSTs.
2017-02-21Implementations for Plugin-Preset-Load to set automationRobin Gareus
2017-01-20fix a -WformatRobin Gareus
2017-01-20Fix oddities when replacing VST-presets.Robin Gareus
VST used the count of available of presets as URI: - add 2 presets (1,2) - remove first, add another one -> two presets with same URI (2,2) PluginInfo::get_presets() simply lists all (name only) in a vector. Plugin::find_presets() uses the URI in a map (unique by URI). ..various ensuing bugs: eg. Plugin::remove_preset() looked up by name, but didn't check for NULL.
2016-11-15add signal for VST state loadRobin Gareus
MacVST has no dedicated VST event-loop to directly handle this.
2016-11-14Fix VST state-lock SNAFU (effSetChunk and process are exclusive)Robin Gareus
2016-11-13VST set defaults only once (initially)Robin Gareus
Opening the generic plugin UI or re-opening the GUI will call get_parameter_descriptor() again, and replace the defaults with current values.
2016-10-10add missing #includeRobin Gareus
2016-10-10convert VST parameter names to UTF8Robin Gareus
Another fix for "ยต-iness" (ec8cf4e4f58a, d121e6bf15cbf6f, 57b9dab27cb05d) this time for Windows.
2016-09-17VST threading: prevent concurrent effSetChunk and process()Robin Gareus
This is a potential fix for unreliable preset load/restore. (http://mixbus.harrisonconsoles.com/forum/thread-1970-post-21486.html#pid21486) Since a Glib Mutex can't be copy-constructed an explicit copy c'tor is needed.
2016-08-03add support for VST default values (instantiation time value)Robin Gareus
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-06-25major internal plugin & processor API change:Robin Gareus
Pass current (latency compensated) cycle times to plugin. This fixes time-reporting to plugins and also fixes automation and when bouncing (the session->transport* is not valid) etc.
2016-05-26update VST audioMasterGetTimeRobin Gareus
* don't use a static struct. this fixes a concurrency issue with flags and valid values * send kVstTransportChanged IFF there is an actual change * set system time * send loop location
2016-05-07fix LocaleGuard contstructor (3dc77280)Robin Gareus
2016-05-05we always only use the "C" locale when saving.Robin Gareus
2016-05-04OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)Paul Davis
2016-04-27amend c1c81a239c after testingRobin Gareus
2016-04-27probable fix for 64bit VST signal latencyRobin Gareus
2016-04-13prepare VST plugins for reporting connected pinsRobin Gareus
The VST needs a way to get the parent PluginInserts's channel-map :(
2016-03-27VSTs don't process in-placeRobin Gareus