#include "ardour/ladspa_plugin.h"
#include "ardour/plugin.h"
#include "ardour/plugin_insert.h"
-#include "ardour/port.h"
-#include "ardour/route.h"
#ifdef LV2_SUPPORT
#include "ardour/lv2_plugin.h"
#include "ardour/audio_unit.h"
#endif
-#include "ardour/audioengine.h"
#include "ardour/session.h"
#include "ardour/types.h"
{
assert (!_plugins.empty());
- if (_plugins.front()->reconfigurable_io()) {
+ PluginInfoPtr info = _plugins.front()->get_info();
+
+ if (info->reconfigurable_io()) {
ChanCount out = _plugins.front()->output_streams ();
- DEBUG_TRACE (DEBUG::Processors, string_compose ("Plugin insert, reconfigur(able) output streams = %1\n", out));
+ // DEBUG_TRACE (DEBUG::Processors, string_compose ("Plugin insert, reconfigur(able) output streams = %1\n", out));
return out;
} else {
- ChanCount out = _plugins.front()->get_info()->n_outputs;
- DEBUG_TRACE (DEBUG::Processors, string_compose ("Plugin insert, static output streams = %1 for %2 plugins\n", out, _plugins.size()));
+ ChanCount out = info->n_outputs;
+ // DEBUG_TRACE (DEBUG::Processors, string_compose ("Plugin insert, static output streams = %1 for %2 plugins\n", out, _plugins.size()));
out.set_audio (out.n_audio() * _plugins.size());
out.set_midi (out.n_midi() * _plugins.size());
return out;
ChanCount in;
- if (_plugins.front()->reconfigurable_io()) {
+ PluginInfoPtr info = _plugins.front()->get_info();
+
+ if (info->reconfigurable_io()) {
assert (_plugins.size() == 1);
in = _plugins.front()->input_streams();
} else {
- in = _plugins[0]->get_info()->n_inputs;
+ in = info->n_inputs;
}
DEBUG_TRACE (DEBUG::Processors, string_compose ("Plugin insert, input streams = %1, match using %2\n", in, _match.method));
/* copy the first stream's buffer contents to the others */
/* XXX: audio only */
- Sample const * mono = bufs.get_audio (in_map.get (DataType::AUDIO, 0, &valid)).data (offset);
- for (uint32_t i = in_streams.n_audio(); i < natural_input_streams().n_audio(); ++i) {
- memcpy (bufs.get_audio (in_map.get (DataType::AUDIO, i, &valid)).data (offset), mono, sizeof (Sample) * nframes);
+ uint32_t first_idx = in_map.get (DataType::AUDIO, 0, &valid);
+ if (valid) {
+ Sample const * mono = bufs.get_audio (first_idx).data (offset);
+ for (uint32_t i = in_streams.n_audio(); i < natural_input_streams().n_audio(); ++i) {
+ memcpy (bufs.get_audio (in_map.get (DataType::AUDIO, i, &valid)).data (offset), mono, sizeof (Sample) * nframes);
+ }
}
}
PluginInsert::Match
PluginInsert::private_can_support_io_configuration (ChanCount const & in, ChanCount& out) const
{
- if (_plugins.front()->reconfigurable_io()) {
+ PluginInfoPtr info = _plugins.front()->get_info();
+
+ if (info->reconfigurable_io()) {
/* Plugin has flexible I/O, so delegate to it */
bool const r = _plugins.front()->can_support_io_configuration (in, out);
if (!r) {
return Match (Delegate, 1);
}
- ChanCount inputs = _plugins[0]->get_info()->n_inputs;
- ChanCount outputs = _plugins[0]->get_info()->n_outputs;
+ ChanCount inputs = info->n_inputs;
+ ChanCount outputs = info->n_outputs;
bool no_inputs = true;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
{
/* FIXME: probably should be taking out some lock here.. */
- double const plugin_val = user_to_plugin (user_val);
-
for (Plugins::iterator i = _plugin->_plugins.begin(); i != _plugin->_plugins.end(); ++i) {
- (*i)->set_parameter (_list->parameter().id(), plugin_val);
+ (*i)->set_parameter (_list->parameter().id(), user_val);
}
boost::shared_ptr<Plugin> iasp = _plugin->_impulseAnalysisPlugin.lock();
if (iasp) {
- iasp->set_parameter (_list->parameter().id(), plugin_val);
+ iasp->set_parameter (_list->parameter().id(), user_val);
}
AutomationControl::set_value (user_val);
}
double
-PluginInsert::PluginControl::user_to_plugin (double val) const
-{
- /* no known transformations at this time */
- return val;
-}
-
-double
-PluginInsert::PluginControl::user_to_ui (double val) const
+PluginInsert::PluginControl::internal_to_interface (double val) const
{
if (_logarithmic) {
if (val > 0) {
}
double
-PluginInsert::PluginControl::ui_to_user (double val) const
+PluginInsert::PluginControl::interface_to_internal (double val) const
{
if (_logarithmic) {
val = exp (val);
return val;
}
-/** Convert plugin values to UI values. See pbd/controllable.h */
-double
-PluginInsert::PluginControl::plugin_to_ui (double val) const
-{
- return user_to_ui (plugin_to_user (val));
-}
-
-double
-PluginInsert::PluginControl::plugin_to_user (double val) const
-{
- /* no known transformations at this time */
- return val;
-}
-
XMLNode&
PluginInsert::PluginControl::get_state ()
{
PluginInsert::PluginControl::get_value () const
{
/* FIXME: probably should be taking out some lock here.. */
-
- return plugin_to_user (_plugin->get_parameter (_list->parameter()));
+ return _plugin->get_parameter (_list->parameter());
}
boost::shared_ptr<Plugin>