#include <ardour/ardour.h>
#include <ardour/redirect.h>
#include <ardour/plugin_state.h>
+#include <ardour/types.h>
class XMLNode;
namespace ARDOUR {
class Session;
-class Plugin;
class Route;
+class Plugin;
class Insert : public Redirect
{
virtual ~Insert() { }
- virtual void run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset) = 0;
+ virtual void run (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nframes, nframes_t offset) = 0;
virtual void activate () {}
virtual void deactivate () {}
int set_state(const XMLNode&);
void init ();
- void run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
+ void run (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nframes, nframes_t offset);
- jack_nframes_t latency();
+ nframes_t latency();
uint32_t output_streams() const;
uint32_t input_streams() const;
class PluginInsert : public Insert
{
public:
- PluginInsert (Session&, Plugin&, Placement);
+ PluginInsert (Session&, boost::shared_ptr<Plugin>, Placement);
PluginInsert (Session&, const XMLNode&);
PluginInsert (const PluginInsert&);
~PluginInsert ();
StateManager::State* state_factory (std::string why) const;
Change restore_state (StateManager::State&);
- void run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
- void silence (jack_nframes_t nframes, jack_nframes_t offset);
+ void run (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nframes, nframes_t offset);
+ void silence (nframes_t nframes, nframes_t offset);
void activate ();
void deactivate ();
- void set_block_size (jack_nframes_t nframes);
+ void set_block_size (nframes_t nframes);
uint32_t output_streams() const;
uint32_t input_streams() const;
bool is_generator() const;
- void reset_midi_control (MIDI::Port*, bool);
- void send_all_midi_feedback ();
-
void set_parameter (uint32_t port, float val);
AutoState get_port_automation_state (uint32_t port);
float default_parameter_value (uint32_t which);
- Plugin& plugin(uint32_t num=0) const {
+ boost::shared_ptr<Plugin> plugin(uint32_t num=0) const {
if (num < _plugins.size()) {
- return *_plugins[num];
+ return _plugins[num];
} else {
- return *_plugins[0]; // we always have one
+ return _plugins[0]; // we always have one
}
}
+ PluginType type ();
+
string describe_parameter (uint32_t);
- jack_nframes_t latency();
+ nframes_t latency();
- void transport_stopped (jack_nframes_t now);
- void automation_snapshot (jack_nframes_t now);
+ void transport_stopped (nframes_t now);
+ void automation_snapshot (nframes_t now);
protected:
void store_state (PluginInsertState&) const;
void parameter_changed (uint32_t, float);
- vector<Plugin*> _plugins;
- void automation_run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
- void connect_and_run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset, bool with_auto, jack_nframes_t now = 0);
+ vector<boost::shared_ptr<Plugin> > _plugins;
+ void automation_run (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nframes, nframes_t offset);
+ void connect_and_run (vector<Sample *>& bufs, uint32_t nbufs, nframes_t nframes, nframes_t offset, bool with_auto, nframes_t now = 0);
void init ();
void set_automatable ();
void auto_state_changed (uint32_t which);
void automation_list_creation_callback (uint32_t, AutomationList&);
- Plugin* plugin_factory (Plugin&);
+ boost::shared_ptr<Plugin> plugin_factory (boost::shared_ptr<Plugin>);
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_insert_h__ */