65 return shared_from_this();
97 if (num < _in_map.size()) {
98 return _in_map.find (num)->second;
105 if (num < _out_map.size()) {
106 return _out_map.find (num)->second;
123 bool inplace ()
const {
return ! _no_inplace; }
156 return _sidechain->input ()->n_ports ();
178 std::shared_ptr<SideChain>
sidechain ()
const {
return _sidechain; }
215 std::shared_ptr<AutomationList> list = std::shared_ptr<AutomationList>())
221 std::shared_ptr<Plugin>
plugin(uint32_t num=0)
const {
222 if (num < _plugins.size()) {
223 return _plugins[num];
232 return _sidechain ? true :
false;
237 return _sidechain->input ();
239 return std::shared_ptr<IO> ();
255 return _match.strict_io;
259 return _match.method == Split;
264 out = _configured_out;
284 typedef std::vector<std::shared_ptr<Plugin> >
Plugins;
325 #if defined(_MSC_VER)
335 class PinMappings :
public std::map <uint32_t, ARDOUR::ChanMapping>
337 class
PinMappings :
public std::map <uint32_t, ARDOUR::ChanMapping, std::less<uint32_t>, PBD::StackAllocator<std::pair<const uint32_t, ARDOUR::ChanMapping>, 4> >
345 const_iterator x = find (i);
346 assert (x != end ());
349 return find(i)->second;
387 typedef std::map<uint32_t, std::shared_ptr<ReadOnlyControl> >
CtrlOutMap;
ARDOUR::ChanMapping const & p(const uint32_t i) const
bool provides_stats() const
void set_thru_map(ChanMapping)
ChanMapping no_sc_input_map() const
combined (all instances) input map w/o sidechain sinks
void set_state_dir(const std::string &d="")
PBD::TimingStats _timing_stats
void inplace_silence_unconnected(BufferSet &, const PinMappings &, samplecnt_t nframes, samplecnt_t offset) const
bool write_immediate_event(Evoral::EventType event_type, size_t size, const uint8_t *buf)
bool reset_parameters_to_default()
bool load_preset(Plugin::PresetRecord)
ChanCount _required_buffers
bool set_count(uint32_t num)
bool can_support_io_configuration(const ChanCount &in, ChanCount &out)
ChanCount internal_output_streams() const
bool pre_seed(const ChanCount &, const ChanCount &, const ChanMapping &, const ChanMapping &, const ChanMapping &)
ChanCount natural_input_streams() const
void set_parameter_state_2X(const XMLNode &node, int version)
void start_touch(uint32_t param_id)
void set_input_map(uint32_t, ChanMapping)
std::string describe_parameter(Evoral::Parameter param)
PBD::Signal< void()> PluginMapChanged
void automation_run(samplepos_t, pframes_t, bool only_active=false)
UIElements ui_elements() const
ChanCount internal_input_streams() const
std::shared_ptr< SideChain > sidechain() const
std::atomic< int > _stat_reset
bool get_stats(PBD::microseconds_t &min, PBD::microseconds_t &max, double &avg, double &dev) const
void set_outputs(const ChanCount &)
BufferSet _signal_analysis_inputs
float default_parameter_value(const Evoral::Parameter ¶m)
void add_plugin(std::shared_ptr< Plugin >)
std::shared_ptr< Plugin > get_impulse_analysis_plugin()
bool has_no_inputs() const
bool has_sidechain() const
ChanMapping thru_map() const
void configured_io(ChanCount &in, ChanCount &out) const
void collect_signal_for_analysis(samplecnt_t nframes)
ChanMapping output_map(uint32_t num) const
void update_sidechain_name()
std::shared_ptr< Plugin > plugin(uint32_t num=0) const
void add_sidechain_from_xml(const XMLNode &node, int version)
bool has_midi_bypass() const
void monitoring_changed()
std::weak_ptr< PluginInsert > weak_ptr()
void set_custom_cfg(bool b)
bool enabled() const
processor enabled/bypass
std::atomic< int > _flush
uint32_t _sc_capture_latency
void set_owner(SessionObject *)
std::shared_ptr< IO > sidechain_input() const
ChanCount sidechain_input_ports() const
void realtime_locate(bool)
ChanCount _configured_internal
ChanCount _configured_out
PBD::Signal< void()> PluginIoReConfigure
void realtime_handle_transport_stopped()
ChanCount internal_streams() const
samplecnt_t signal_latency() const
samplecnt_t plugin_latency() const
ChanMapping output_map() const
combined (all instances) output map
bool has_midi_thru() const
uint32_t _sc_playback_latency
ChanMapping input_map(uint32_t num) const
void set_strict_io(bool b)
static const std::string port_automation_node_name
bool _inverted_bypass_enable
std::weak_ptr< Plugin > _impulseAnalysisPlugin
void set_sinks(const ChanCount &)
const ChanCount & required_buffers() const
ChanCount _cached_sidechain_pins
ChanCount input_streams() const
void silence(samplecnt_t nframes, samplepos_t start_sample)
BufferSet _signal_analysis_outputs
bool is_instrument() const
bool configure_io(ChanCount in, ChanCount out)
int set_state(const XMLNode &, int version)
void bypassable_changed()
Match private_can_support_io_configuration(ChanCount const &, ChanCount &) const
void bypass(BufferSet &bufs, pframes_t nframes)
bool can_reset_all_parameters()
void set_parameter(Evoral::Parameter param, float val, sampleoffset_t)
Match automatic_can_support_io_configuration(ChanCount const &, ChanCount &) const
std::map< uint32_t, std::shared_ptr< ReadOnlyControl > > CtrlOutMap
void automate_and_run(BufferSet &bufs, samplepos_t start, samplepos_t end, double speed, pframes_t nframes)
ChanMapping input_map() const
combined (all instances) input map
bool strict_io_configured() const
void set_output_map(uint32_t, ChanMapping)
std::shared_ptr< ReadOnlyControl > control_output(uint32_t) const
samplecnt_t _signal_analysis_collect_nsamples
bool find_next_event(Temporal::timepos_t const &, Temporal::timepos_t const &, Evoral::ControlEvent &, bool only_active=true) const
bool is_channelstrip() const
ChanCount output_streams() const
samplecnt_t _signal_analysis_collect_nsamples_max
PBD::Signal< void()> PluginConfigChanged
ChanCount natural_output_streams() const
bool has_no_audio_inputs() const
int set_block_size(pframes_t nframes)
uint32_t _plugin_signal_latency
bool has_output_presets(ChanCount in=ChanCount(DataType::MIDI, 1), ChanCount out=ChanCount(DataType::AUDIO, 2))
const ChanCount & preset_out() const
bool add_sidechain(uint32_t n_audio=1, uint32_t n_midi=0)
std::vector< std::shared_ptr< Plugin > > Plugins
void end_touch(uint32_t param_id)
ChanCount sidechain_input_pins() const
void create_automatable_parameters()
void parameter_changed_externally(uint32_t, float)
void run(BufferSet &in, samplepos_t start_sample, samplepos_t end_sample, double speed, pframes_t nframes, bool)
bool has_automatables() const
Match internal_can_support_io_configuration(ChanCount const &, ChanCount &) const
void connect_and_run(BufferSet &bufs, samplepos_t start, samplecnt_t end, double speed, pframes_t nframes, samplecnt_t offset, bool with_auto)
PBD::Signal< void(BufferSet *, BufferSet *)> AnalysisDataGathered
CtrlOutMap _control_outputs
void control_list_automation_state_changed(Evoral::Parameter, AutoState)
PluginInsert(const PluginInsert &)
uint32_t get_count() const
void plugin_removed(std::weak_ptr< Plugin >)
bool bypassable() const
enable is not automated or locked
bool reset_sidechain_map()
std::shared_ptr< SideChain > _sidechain
bool set_preset_out(const ChanCount &)
bool reset_map(bool emit=true)
PluginInsert(Session &, Temporal::TimeDomainProvider const &tdp, std::shared_ptr< Plugin >=std::shared_ptr< Plugin >())
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplecnt_t samplecnt_t
Temporal::sampleoffset_t sampleoffset_t
Temporal::samplepos_t samplepos_t
PIControl(Session &s, PlugInsertBase *p, const Evoral::Parameter ¶m, const ParameterDescriptor &desc, std::shared_ptr< AutomationList > list=std::shared_ptr< AutomationList >())
void actually_set_value(double val, PBD::Controllable::GroupControlDisposition group_override)