本文整理汇总了C++中BasePlugin::getParameterPort方法的典型用法代码示例。如果您正苦于以下问题:C++ BasePlugin::getParameterPort方法的具体用法?C++ BasePlugin::getParameterPort怎么用?C++ BasePlugin::getParameterPort使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BasePlugin
的用法示例。
在下文中一共展示了BasePlugin::getParameterPort方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addPlugin
void AudioTrack::addPlugin(BasePlugin* plugin, int idx)/*{{{*/
{
if(debugMsg)
qDebug("AudioTrack::addPlugin(%p, %d) \n", plugin, idx);
if (!plugin)
{
BasePlugin* oldPlugin = (*_efxPipe)[idx];
if (oldPlugin)
{
oldPlugin->setId(-1);
oldPlugin->setTrack(0);
uint32_t paramCount = oldPlugin->getParameterCount();
for (uint32_t i = 0; i < paramCount; i++)
{
ParameterPort* paramPort = oldPlugin->getParameterPort(i);
if (! paramPort || paramPort->type != PARAMETER_INPUT || (paramPort->hints & PARAMETER_IS_AUTOMABLE) == 0)
continue;
int id = genACnum(idx, i);
removeController(id);
}
_efxPipe->remove(idx);
}
}
if (plugin)
{
idx = efxPipe()->addPlugin(plugin, idx);
plugin->setId(idx);
plugin->setTrack(this);
uint32_t paramCount = plugin->getParameterCount();
for (uint32_t i = 0; i < paramCount; i++)
{
ParameterPort* paramPort = plugin->getParameterPort(i);
if (! paramPort || paramPort->type != PARAMETER_INPUT || (paramPort->hints & PARAMETER_IS_AUTOMABLE) == 0)
continue;
int id = genACnum(idx, i);
CtrlValueType t = plugin->valueType();
CtrlList* cl = new CtrlList(id);
cl->setRange(paramPort->ranges.min, paramPort->ranges.max);
cl->setName(plugin->getParameterName(i));
cl->setPluginName(plugin->name());
cl->setUnit(plugin->getParameterUnit(i));
cl->setValueType(t);
if (paramPort->hints & PARAMETER_IS_TOGGLED)
cl->setMode(CtrlList::DISCRETE);
else
cl->setMode(CtrlList::INTERPOLATE);
cl->setCurVal(plugin->getParameterValue(i));
addController(cl);
}
}
}/*}}}*/
示例2: readProperties
bool AudioTrack::readProperties(Xml& xml, const QString& tag)
{
if (tag == "LadspaPlugin" || tag == "plugin")
{
BasePlugin* pi = new LadspaPlugin();
pi->setTrack(this);
pi->setId((int)_efxPipe->size());
if (pi->readConfiguration(xml, false))
delete pi;
else
_efxPipe->addPlugin(pi, -1);
}
else if (tag == "Lv2Plugin")
{
Lv2Plugin* pi = new Lv2Plugin();
pi->setTrack(this);
pi->setId((int)_efxPipe->size());
if (pi->readConfiguration(xml, false))
delete pi;
else
_efxPipe->addPlugin(pi, -1);
}
else if (tag == "VstPlugin")
{
VstPlugin* pi = new VstPlugin();
pi->setTrack(this);
pi->setId((int)_efxPipe->size());
if (pi->readConfiguration(xml, false))
delete pi;
else
_efxPipe->addPlugin(pi, -1);
}
else if (tag == "auxSend")
readAuxSend(xml);
else if (tag == "prefader")
_prefader = xml.parseInt();
else if (tag == "sendMetronome")
_sendMetronome = xml.parseInt();
else if (tag == "automation")
setAutomationType(AutomationType(xml.parseInt()));
else if (tag == "controller")
{
CtrlList* l = new CtrlList();
l->read(xml);
// Since (until now) oom wrote a 'zero' for plugin controller current value
// in the XML file, we can't use that value, now that plugin automation is added.
// We must take the value from the plugin control value.
// Otherwise we break all existing .oom files with plugins, because the gui
// controls would all be set to zero.
// But we will allow for the (unintended, useless) possibility of a controller
// with no matching plugin control.
BasePlugin* p = 0;
bool ctlfound = false;
int m = l->id() & AC_PLUGIN_CTL_ID_MASK;
int n = (l->id() >> AC_PLUGIN_CTL_BASE_POW) - 1;
int pdepth = _efxPipe->size();
if (n >= 0 && n < pdepth)
{
p = (*_efxPipe)[n];
if (p)
{
ParameterPort* cport = p->getParameterPort(m);
if (cport && cport->type == PARAMETER_INPUT && (cport->hints & PARAMETER_IS_AUTOMABLE) > 0)
ctlfound = true;
}
}
iCtrlList icl = _controller.find(l->id());
if (icl == _controller.end())
_controller.add(l);
else
{
CtrlList* d = icl->second;
for (iCtrl i = l->begin(); i != l->end(); ++i)
d->add(i->second.getFrame(), i->second.val);
if (!ctlfound)
d->setCurVal(l->curVal());
d->setColor(l->color());
d->setVisible(l->isVisible());
d->setDefault(l->getDefault());
delete l;
l = d;
}
if (ctlfound)
{
l->setCurVal(p->getParameterValue(m));
ParameterPort* cport = p->getParameterPort(m);
if (cport && cport->hints & PARAMETER_IS_TOGGLED)
l->setMode(CtrlList::DISCRETE);
else
l->setMode(CtrlList::INTERPOLATE);
}
}