Commit Graph

166 Commits

Author SHA1 Message Date
Paul Davis
8d3a8ca913 Add AutomationControl::set_value_unchecked() and AutomationControl::writable() and use them.
Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they
do not attempt to overwrite data sent to them while automation playback is underway.
2015-10-21 22:31:35 -04:00
Paul Davis
f806f059b3 rename Plugin::ParameterChanged to ParameterChangedExternally to reflect its intent, and clean up the libardour side of result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.
2015-10-20 10:23:49 -04:00
Paul Davis
7804a524dc Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit 336b2eb9a4.
2015-10-20 10:23:49 -04:00
Paul Davis
336b2eb9a4 rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.

Significant modification of LV2 GUI updating was required.

Still to be tested for feedback loop issues: AudioUnits
2015-10-20 09:07:58 -04:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Paul Davis
ec06f2c49f spelling error fixes (notably "overriden" => "overidden") from IOhannes m zmölnig 2015-09-11 09:23:43 -04:00
Robin Gareus
3dd3c35dfe fix a typo 2015-08-15 19:58:37 +02:00
Robin Gareus
50f0e59087 save [actual] plugin i/o-configuration
for use with placeholder stub in case the plugin becomes n/a.
2015-08-15 19:58:04 +02:00
Robin Gareus
7800673329 remember actual processor configuration
Prepare for proper processor-box wire-display:
Don't replicate connection-logic in the GUI, allow to query the
actual configured configuration (which may differ from the processor
i/o-streams)
2015-08-09 08:37:22 +02:00
Robin Gareus
61a084e0ad configure Analysis Plugin
required for variable I/O count plugins
2015-07-20 13:31:12 +02:00
Robin Gareus
4c608b6e04 assign new IDs to plugin copies on paste.
when copying a plugin the state is transferred by serializing
XML and setting state from XML. This state includes the unique ID.

This ID needs to be identical at first in order to load
the state from <session-dir>/plugins/<ID>/*
2015-07-10 22:09:18 +02:00
Robin Gareus
dd07428c48 properly handle integer steps in plugin controls
The integer steps min/max are inclusive. 
e.g the integer range -1 to +1 has three possible values (not two).
2015-06-02 01:01:23 +02:00
Robin Gareus
ce69096fae fix importing A2 automation data - fixes #6359 2015-06-01 18:22:25 +02:00
Robin Gareus
fbea6c2542 API to reset plugin parameters to default 2015-05-04 20:35:23 +02:00
Robin Gareus
17dfebf611 Only restore plugin state (of first instance) once. 2015-01-06 20:29:39 +01:00
David Robillard
767c0238a3 Replace half-baked param metadata with descriptor.
Among other things, this means that automation controls/lists have the actual
min/max/normal/toggled of parameters, and not those inferred from the Parameter
ID, which is not correct for things like plugin parameters.

Pushing things down to the Evoral::ParmeterDescriptor may be useful in the
future to have lists do smarter things based on parameter range, but currently
I have just pushed down the above-mentioned currently used attributes.
2014-12-01 23:35:24 -05:00
David Robillard
784b96e255 Set discrete by default for boolean parameters. 2014-11-29 01:40:23 -05:00
Robin Gareus
6b3a8915f3 add abort() to non-reached code
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
2014-11-14 11:30:08 +01:00
David Robillard
bb12c750bb Just rename problematic Variant::VOID type. 2014-11-07 17:21:43 -05:00
David Robillard
ef16fdcd89 Fix parameter descriptors for one control leaking into another. 2014-11-03 18:40:17 -05:00
David Robillard
7204702c3f Reduce coupling between Plugin and PluginInsert. 2014-11-03 13:40:50 -05:00
David Robillard
8a128b33d3 Automation of LV2 plugin properties.
Work towards ParameterDescriptor being used more universally to describe control characteristics.
2014-11-02 02:10:24 -05:00
David Robillard
6dfb11c2d0 Move ParameterDescriptor from Plugin to its own header.
This fixes circular dependency issues that arise when using ParameterDescriptor more widely.
2014-11-02 02:10:24 -05:00
Ben Loftis
41f13c0109 Fix some inconsistent usage of a Controllables Interface value.
This breaks a lot of controls, because they are misusing it as well.
2014-09-18 16:35:03 -05:00
Paul Davis
8c9749e42f merge with master and fix 4 conflicts by hand 2014-06-02 11:32:13 -04:00
Robin Gareus
491f3f6e44 process effect-automation when bouncing w/processing 2014-05-26 06:55:56 +02:00
Robin Gareus
6142c814bf provide plugins with all available buffers.
e.g. Audio in -> Midi out plugins (on an audio-track).
Midi-buffers do exist in the route but no corresponding
(physical) Input port-buffer exists and ardour crashed.

Now, the plugin itself still only accesses the mapped ports
(ChanMapping), but the mapped buffers are at most
"processor_max_streams" and at least the required
in+out buffers for the plugin.
2014-05-06 23:34:34 +02:00
Robin Gareus
af0c42ec4f midi-controller, support log parameters - fixes #5890 2014-03-23 18:59:24 +01:00
Robin Gareus
147145f3a8 fix typo in doc 2014-02-28 17:48:21 +01:00
Robin Gareus
918f34b009 treat linux and windows VST plugins equivalent on session load 2014-02-27 00:44:48 +01:00
Robin Gareus
9a190b8d2b fix crash when removing synth from midi-track
(and there are bypassed audio-plugins after said synth)
2014-01-26 00:46:39 +01:00
David Robillard
96cbcf0ee4 Fix crash when instrument plugins fail to instantiate. 2014-01-17 19:34:51 -05:00
Robin Gareus
00fbc9c342 fix plugin log-sliders for ranges [0..] 2014-01-06 00:01:24 +01:00
Robin Gareus
2644aaddb1 visualize port connections in mixer/processor when in < out 2014-01-01 15:34:06 +01:00
Robin Gareus
9875d43414 use buffer APIs instead of raw memcpy, fix plugin bypass 2013-12-29 21:48:14 +01:00
Robin Gareus
37264c85a5 centralize buffer silent-flag
fixes possible x-talk 1 in, >= 2 out tracks:

Previously, only the first route-buffer of the input buffers
were marked as non-silent in Route::process_output_buffers().
Other buffers in the set (e.g. post-panner) would
contain audio but not marked as non-silent.
2013-12-28 13:43:44 +01:00
Robin Gareus
bfd50cdeb0 rework MIDI [processor|plugin] chain
* forward midi-data around plugins that have no MIDI-out
* allow to insert plugins with no MIDI-input at a point with one MIDI-channel

This works because excess ports (both plugin and route) remain
unconnected and use scratch-buffers.

Tested with LV2, LXVST and LADSPA.
(AU plugins with variable in/out retain the old behavior, no bypass)

fixes http://tracker.ardour.org/view.php?id=5630
2013-08-02 03:39:00 +02:00
Robin Gareus
4dc74ae2ea use zeroed scratch buffers for "silent" plugin runs
Plugins rewrite the buffer data in-place and some plugins
can produce output even when fed with silence.

Hence, during a PluginInsert::silence() run a plugin can
inject data into the "silent" buffers which causes side-effects.

Kudos to Chris 'oofus' Goddard for finding this issue.
2013-08-01 00:35:24 +02:00
Paul Davis
9cb678ebcc finally get to the bottom of where NO_PLUGIN_STATE needs to be in order to be useful 2013-07-15 22:23:16 -04:00
Paul Davis
3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
Paul Davis
0532e2063b dramatic overhaul of automation. too long to explain here. this work is not finished - write/touch passes do not correctly overwrite existing data because the semantics of ControlList::insert_iterator need clarification. more to follow
git-svn-id: svn://localhost/ardour2/branches/3.0@13038 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-13 21:05:45 +00:00
Paul Davis
8d6d3c309d add StartTouch and EndTouch signals to Plugin class; make PluginInsert handle these signals and mark the start end of touch/gestures for a given AutomationControl; net result is that touch automation now works for AudioUnit plugins, at least those whose GUIs send kAudioUnitEvent_{Begin,End}ParameterGesture events
git-svn-id: svn://localhost/ardour2/branches/3.0@13028 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-11 15:31:02 +00:00
Paul Davis
0fb8c89eeb fix propagation of parameter changes from Plugin to PluginInsert so that automation will record parameter changes performed in a plugin GUI (#4976)
git-svn-id: svn://localhost/ardour2/branches/3.0@13026 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-11 03:48:14 +00:00
Paul Davis
bfd2ee48ce improved version of last commit, for tracking plugin control changes and mapping them to PluginInsert automation controls
git-svn-id: svn://localhost/ardour2/branches/3.0@13025 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-11 00:23:55 +00:00
Paul Davis
80d9eaf96c set fader and plugin parameter automation curve default values - what else needs this?
git-svn-id: svn://localhost/ardour2/branches/3.0@12996 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-09 18:31:09 +00:00
David Robillard
6fa6514cfd Remove over 500 unnecessary includes (including 54 of session.h).
It's slightly possible that this causes trivial build failures on different
configurations, but otherwise shouldn't cause any problems (i.e. no actual
changes other than include/naming/namespace stuff).  I deliberately avoided
removing libardour-config.h since this can mysteriously break things, though a
few of those do seem to be unnecessary.

This commit only targets includes of ardour/*.h.  There is also a very large
number of unnecessary includes of stuff in gtk2_ardour; tackling that should
also give a big improvement in build time when things are modified.


git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 06:09:29 +00:00
Paul Davis
ad39f598ae move ::reconfigurable_io() from Plugin to PluginInfo so that the GUI can offer correct information without having ccess to a Plugin instance
git-svn-id: svn://localhost/ardour2/branches/3.0@12200 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-07 22:00:42 +00:00
David Robillard
99ba7de591 Fix failed assertion with plugins with only an audio output are inserted on a MIDI track. This logic is probably completely wrong (i.e. it shouldn't be Split in the first place), but it fixes the crash, anyway.
git-svn-id: svn://localhost/ardour2/branches/3.0@11876 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-10 20:45:39 +00:00
Carl Hetherington
4381b590bb Reinstate user Controllable values, as they are needed
for gain (which I forgot about).


git-svn-id: svn://localhost/ardour2/branches/3.0@11293 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-21 16:38:56 +00:00