#include "ardour/ladspa_plugin.h"
#include "ardour/plugin_manager.h"
-#ifdef HAVE_AUDIOUNITS
+#ifdef AUDIOUNIT_SUPPORT
#include "ardour/audio_unit.h"
#endif
, _have_pending_stop_events (false)
, _parameter_changed_since_last_preset (false)
{
+ _pending_stop_events.ensure_buffers (DataType::MIDI, 1, 4096);
}
Plugin::Plugin (const Plugin& other)
, _have_pending_stop_events (false)
, _parameter_changed_since_last_preset (false)
{
-
+ _pending_stop_events.ensure_buffers (DataType::MIDI, 1, 4096);
}
Plugin::~Plugin ()
{
-
}
void
PluginPtr
ARDOUR::find_plugin(Session& session, string identifier, PluginType type)
{
- PluginManager *mgr = PluginManager::the_manager();
+ PluginManager& mgr (PluginManager::instance());
PluginInfoList plugs;
switch (type) {
case ARDOUR::LADSPA:
- plugs = mgr->ladspa_plugin_info();
+ plugs = mgr.ladspa_plugin_info();
break;
#ifdef LV2_SUPPORT
case ARDOUR::LV2:
- plugs = mgr->lv2_plugin_info();
+ plugs = mgr.lv2_plugin_info();
break;
#endif
-#ifdef VST_SUPPORT
- case ARDOUR::VST:
- plugs = mgr->vst_plugin_info();
+#ifdef WINDOWS_VST_SUPPORT
+ case ARDOUR::Windows_VST:
+ plugs = mgr.windows_vst_plugin_info();
break;
#endif
#ifdef LXVST_SUPPORT
case ARDOUR::LXVST:
- plugs = mgr->lxvst_plugin_info();
+ plugs = mgr.lxvst_plugin_info();
break;
#endif
-#ifdef HAVE_AUDIOUNITS
+#ifdef AUDIOUNIT_SUPPORT
case ARDOUR::AudioUnit:
- plugs = mgr->au_plugin_info();
+ plugs = mgr.au_plugin_info();
break;
#endif
}
}
-#ifdef VST_SUPPORT
+#ifdef WINDOWS_VST_SUPPORT
/* hmm, we didn't find it. could be because in older versions of Ardour.
we used to store the name of a VST plugin, not its unique ID. so try
again.
int
Plugin::connect_and_run (BufferSet& bufs,
- ChanMapping in_map, ChanMapping out_map,
- pframes_t nframes, framecnt_t offset)
+ ChanMapping /*in_map*/, ChanMapping /*out_map*/,
+ pframes_t /* nframes */, framecnt_t /*offset*/)
{
if (bufs.count().n_midi() > 0) {
/* Track notes that we are sending to the plugin */
+
MidiBuffer& b = bufs.get_midi (0);
bool looped;
+
_tracker.track (b.begin(), b.end(), looped);
if (_have_pending_stop_events) {
void
Plugin::realtime_handle_transport_stopped ()
+{
+ resolve_midi ();
+}
+
+void
+Plugin::realtime_locate ()
+{
+ resolve_midi ();
+}
+
+void
+Plugin::monitoring_changed ()
+{
+ resolve_midi ();
+}
+
+void
+Plugin::resolve_midi ()
{
/* Create note-offs for any active notes and put them in _pending_stop_events, to be picked
up on the next call to connect_and_run ().
*/
- _pending_stop_events.ensure_buffers (DataType::MIDI, 1, 4096);
_pending_stop_events.get_midi(0).clear ();
_tracker.resolve_notes (_pending_stop_events.get_midi (0), 0);
_have_pending_stop_events = true;
}
int
-Plugin::set_state (const XMLNode& node, int version)
+Plugin::set_state (const XMLNode& node, int /*version*/)
{
XMLProperty const * p = node.property (X_("last-preset-uri"));
if (p) {
add_state (root);
return *root;
}
+
+void
+Plugin::set_info (PluginInfoPtr info)
+{
+ _info = info;
+}
+
+