X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fplugin_insert.h;h=4b5f38964a3f528ad4dd2e09edeac9c359e7caa1;hb=b4d4cb805e5506879f1463fffdd4ea5fc3750bd5;hp=4a9d87c88c5833f7d932967a3acc3c072bc9855b;hpb=6dd5d6df71acc5eacab5ef2e1b500b123ede4254;p=ardour.git diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 4a9d87c88c..4b5f38964a 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -32,6 +32,7 @@ #include "ardour/io.h" #include "ardour/types.h" #include "ardour/parameter_descriptor.h" +#include "ardour/plugin.h" #include "ardour/processor.h" #include "ardour/sidechain.h" #include "ardour/automation_control.h" @@ -92,10 +93,13 @@ class LIBARDOUR_API PluginInsert : public Processor return _thru_map; } + bool pre_seed (const ChanCount&, const ChanCount&, const ChanMapping&, const ChanMapping&, const ChanMapping&); + ChanMapping input_map () const; ///< combined (all instances) input map ChanMapping output_map () const; ///< combined (all instances) output map bool has_midi_bypass () const; bool has_midi_thru () const; + bool inplace () const { return ! _no_inplace; } #ifdef MIXBUS bool is_channelstrip () const; @@ -134,14 +138,19 @@ class LIBARDOUR_API PluginInsert : public Processor } } + const ChanCount& required_buffers () const { return _required_buffers; } + const ChanCount& preset_out () const { return _preset_out; } + // allow to override output_streams(), implies "Custom Mode" // only the owning route may call these (with process lock held) // route is not a friend class, it owns us bool set_count (uint32_t num); + void set_sinks (const ChanCount&); // reconfigurable I/O ONLY void set_outputs (const ChanCount&); void set_strict_io (bool b); void set_custom_cfg (bool b); + bool set_preset_out (const ChanCount&); bool add_sidechain (uint32_t n_audio = 1); bool del_sidechain (); boost::shared_ptr sidechain () const { return _sidechain; } @@ -156,12 +165,18 @@ class LIBARDOUR_API PluginInsert : public Processor bool has_no_inputs() const; bool has_no_audio_inputs() const; - bool is_midi_instrument() const; + bool needs_midi_input() const; + bool has_output_presets ( + ChanCount in = ChanCount (DataType::MIDI, 1), + ChanCount out = ChanCount (DataType::AUDIO, 2) + ); void realtime_handle_transport_stopped (); void realtime_locate (); void monitoring_changed (); + bool load_preset (Plugin::PresetRecord); + /** A control that manipulates a plugin parameter (control port). */ struct PluginControl : public AutomationControl { @@ -304,7 +319,10 @@ class LIBARDOUR_API PluginInsert : public Processor ChanCount _configured_internal; // with side-chain ChanCount _configured_out; ChanCount _custom_out; + ChanCount _custom_sinks; + ChanCount _preset_out; ChanCount _cached_sidechain_pins; + ChanCount _required_buffers; bool _configured; bool _no_inplace; @@ -314,6 +332,7 @@ class LIBARDOUR_API PluginInsert : public Processor bool _mapping_changed; Match private_can_support_io_configuration (ChanCount const &, ChanCount &) const; + Match internal_can_support_io_configuration (ChanCount const &, ChanCount &) const; Match automatic_can_support_io_configuration (ChanCount const &, ChanCount &) const; /** details of the match currently being used */ @@ -326,6 +345,8 @@ class LIBARDOUR_API PluginInsert : public Processor void automation_run (BufferSet& bufs, framepos_t start, pframes_t nframes); void connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t offset, bool with_auto, framepos_t now = 0); + void bypass (BufferSet& bufs, pframes_t nframes); + void inplace_silence_unconnected (BufferSet&, const PinMappings&, framecnt_t nframes, framecnt_t offset) const; void create_automatable_parameters (); void control_list_automation_state_changed (Evoral::Parameter, AutoState);