24 #ifndef __ardour_plugin_insert_h__
25 #define __ardour_plugin_insert_h__
66 return shared_from_this();
98 if (num < _in_map.size()) {
99 return _in_map.find (num)->second;
106 if (num < _out_map.size()) {
107 return _out_map.find (num)->second;
124 bool inplace ()
const {
return ! _no_inplace; }
157 return _sidechain->input ()->n_ports ();
179 std::shared_ptr<SideChain>
sidechain ()
const {
return _sidechain; }
216 std::shared_ptr<AutomationList> list = std::shared_ptr<AutomationList>())
222 std::shared_ptr<Plugin>
plugin(uint32_t num=0)
const {
223 if (num < _plugins.size()) {
224 return _plugins[num];
233 return _sidechain ? true :
false;
238 return _sidechain->input ();
240 return std::shared_ptr<IO> ();
256 return _match.strict_io;
260 return _match.method == Split;
265 out = _configured_out;
285 typedef std::vector<std::shared_ptr<Plugin> >
Plugins;
326 #if defined(_MSC_VER)
336 class PinMappings :
public std::map <uint32_t, ARDOUR::ChanMapping>
338 class
PinMappings :
public std::map <uint32_t, ARDOUR::ChanMapping, std::less<uint32_t>, PBD::StackAllocator<std::pair<const uint32_t, ARDOUR::ChanMapping>, 4> >
346 const_iterator x = find (i);
347 assert (x != end ());
350 return find(i)->second;
388 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)
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
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
PBD::Signal0< void > PluginConfigChanged
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)
PBD::Signal0< void > PluginIoReConfigure
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
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)
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)
PBD::Signal0< void > PluginMapChanged
PBD::Signal2< void, BufferSet *, BufferSet * > AnalysisDataGathered
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)