Age | Commit message (Collapse) | Author |
|
|
|
|
|
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
|
|
|
|
|
|
This has been superseded by value_as_string() along with meta-data
from parameter-descriptor, which is supported by all standards, except VST.
|
|
Plugins are only a source of Latency (Plugin delay).
The API to query, signal and override Latency is managed
by PluginInsert.
|
|
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.
|
|
This unifies common PluginManager VST code to construct *VSTPluginInfo
and also provides a dedicated is_instrument() method for VST plugins.
|
|
|
|
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, ...>
|
|
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.
|
|
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
|
|
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
|
|
This may fix some issues with VST state being restored incorrectly
when a plugin-preset was loaded.
|
|
|
|
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
|
|
Apparently "user" is for plugins (not hosts) to use.
|
|
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.
|
|
|
|
|
|
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)
|
|
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).
|
|
|
|
|
|
|
|
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.
|
|
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)
|
|
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.
|
|
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.
|
|
|
|
|
|
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.
|
|
MacVST has no dedicated VST event-loop to directly handle this.
|
|
|
|
Opening the generic plugin UI or re-opening the GUI will call
get_parameter_descriptor() again, and replace the defaults with
current values.
|
|
|
|
Another fix for "ยต-iness" (ec8cf4e4f58a, d121e6bf15cbf6f, 57b9dab27cb05d)
this time for Windows.
|
|
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.
|
|
|
|
|
|
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.
|
|
* 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
|
|
|
|
|
|
|
|
|
|
|
|
The VST needs a way to get the parent PluginInserts's channel-map :(
|
|
|