Commit Graph

141 Commits

Author SHA1 Message Date
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
Carl Hetherington
d03d0363a4 Remove unused concept of user' values. Make user_to_ui
and ui_to_user virtual members of PBD::Controllable.


git-svn-id: svn://localhost/ardour2/branches/3.0@11286 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-20 18:02:36 +00:00
Paul Davis
d0d6a2015f reduce Processor debug tag verbosity
git-svn-id: svn://localhost/ardour2/branches/3.0@11206 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-09 16:43:09 +00:00
Paul Davis
5558b3cf06 a grab bag of changes correcting and improving the way MIDI note on/off tracking is done. may/should fix a number of problem with spurious note-offs under a variety of circumstances
git-svn-id: svn://localhost/ardour2/branches/3.0@11074 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26 17:01:31 +00:00
Carl Hetherington
067b81d0bf Remove unnecessary silencing of unused plugin inputs; unnecessary as (LADSPA/LV2 at least) connect_and_run routines pass in silent buffers for inputs that are not in the ChanMapping. The explicit silencing also failed if the plugin had more inputs than any processor on the route (fixes #4535).
git-svn-id: svn://localhost/ardour2/branches/3.0@10949 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-09 17:57:50 +00:00
Paul Davis
5aa4d95f59 rename a Buffer/BufferSet method to be a little clearer as to its intent (is_silent(bool) => set_is_silent(bool))
git-svn-id: svn://localhost/ardour2/branches/3.0@10867 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-02 19:53:33 +00:00
Carl Hetherington
e8ee8593c7 Trim function that is only used once.
git-svn-id: svn://localhost/ardour2/branches/3.0@10804 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-23 19:29:48 +00:00
Carl Hetherington
d9a3c6b89f Rename windows VST stuff with a Windows prefix.
git-svn-id: svn://localhost/ardour2/branches/3.0@10738 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-21 17:42:29 +00:00
Paul Davis
7c9c86af27 start trying to remove the use of Plugin::info()->n_{inputs,outputs}, which alway refer to static (unchanging) information from the plugin metadata, which is not useful in the face of AU-like plugin APIs that can change I/O valency as requested, at least some of the time
git-svn-id: svn://localhost/ardour2/branches/3.0@10386 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-01 21:48:45 +00:00
Paul Davis
8771e00fab a better fix for the silent buffer issue: whenever we run a plugin, mark all the buffers passed to it as non-silent. a few plugin APIs allow the plugin to indicate whether or not it generated silence or not, but we ignore this for now (and possibly forever)
git-svn-id: svn://localhost/ardour2/branches/3.0@10385 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-01 21:28:16 +00:00
David Robillard
96dcffcb22 More robust plugin I/O mapping.
This does not change the actual mapping logic, but makes the application of
the mapping much more robust.  If there is no valid mapping for a given port,
that port is connected to silence (instead of crashing messily and/or via a
failed assertion).

Also tolerate mappings that nonsensically map to a buffer that is not present
(this particularly happens for MIDI ports in some cases) as a temporary fix.
The mapping logic needs work and/or our concept of just how much MIDI we support
in a route needs simplification...


git-svn-id: svn://localhost/ardour2/branches/3.0@10262 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-21 04:51:04 +00:00
Carl Hetherington
52caae3971 Improve plugin hide logic to prevent crashes when trying to insert fully audio plugins into MIDI tracks.
git-svn-id: svn://localhost/ardour2/branches/3.0@10232 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-19 14:26:16 +00:00
Paul Davis
4aeebb914e changes for OS X support: change waf config define to COREAUDIO_SUPPORT, remove PluginInsert call to IO::PortCountChanged, remove use of explicit Carbon linkage, fix up AudioUnit internals to actually work (Cocoa GUIs still currently broken)
git-svn-id: svn://localhost/ardour2/branches/3.0@10224 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-18 15:08:42 +00:00
Paul Davis
4085309cdb make Stateful::_id private and provide appropriate methods to set it, and use them throughout ardour
git-svn-id: svn://localhost/ardour2/branches/3.0@10222 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-18 13:18:47 +00:00
Carl Hetherington
f40c7c45be Somewhat experimental patch to hide plugin inputs if the preceding processor doesn't offer outputs for them. Fixes #4330.
git-svn-id: svn://localhost/ardour2/branches/3.0@10126 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-26 18:07:02 +00:00
Carl Hetherington
8f46b0dc4b Tidy up PluginInsert's handling of how it chooses to map plugin IO to that of the insert.
git-svn-id: svn://localhost/ardour2/branches/3.0@10125 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-26 18:04:02 +00:00
Paul Davis
d4433b9ab3 (native) Linux VST support from LinuxDSP
git-svn-id: svn://localhost/ardour2/branches/3.0@10101 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-20 20:29:47 +00:00
Carl Hetherington
14e083001d Fix a couple of thinkos causing crashes during split cycles
with plugins that are splitting e.g. mono inputs to stereo
plugins (#4169).


git-svn-id: svn://localhost/ardour2/branches/3.0@10068 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-12 13:17:42 +00:00
Paul Davis
9a2fe5aad3 refine definition of "generator" plugins, and only send silence through the route is there is a REAL generator plugin (i.e. no inputs at all). Fixes #4144 (hopefully without breaking anything else)
git-svn-id: svn://localhost/ardour2/branches/3.0@9814 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-08 21:58:34 +00:00
Carl Hetherington
d5bb729755 Uncomment fix for #4110.
git-svn-id: svn://localhost/ardour2/branches/3.0@9793 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-04 17:35:28 +00:00
Paul Davis
67e21fd82e add MIDI input control column to editor route list; tweak SVG for MIDI not DIN
git-svn-id: svn://localhost/ardour2/branches/3.0@9779 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-01 15:48:24 +00:00
Paul Davis
071cc3ef01 fix serious breakage with setup of plugin automatable controls/parameters, in which the relative ordering of things during ::set_state() was totally wrong. still see multiple instances of automation tracks for processors in GUI
git-svn-id: svn://localhost/ardour2/branches/3.0@9698 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-09 20:21:46 +00:00
Paul Davis
1a2a58fdd6 don't call Processor::set_state() from PluginInsert::set_state() till the plugins are present in the container, so that describe_parameter() can work
git-svn-id: svn://localhost/ardour2/branches/3.0@9696 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-09 13:55:52 +00:00
David Robillard
a473d630eb Fix broken whitespace. I'd apologize for the compile times if it was my fault :D
git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01 16:50:12 +00:00
David Robillard
c78528dcea Use LV2_SUPPORT define instead of HAVE_SLV2.
git-svn-id: svn://localhost/ardour2/branches/3.0@9510 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14 17:59:16 +00:00
Paul Davis
e22f93407b make instruments/generators do the right thing when bypassed
git-svn-id: svn://localhost/ardour2/branches/3.0@9498 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-12 00:16:16 +00:00