40 unsigned long sampleRate,
42 int idealChannelCount,
43 const LADSPA_Descriptor* descriptor) :
48 m_descriptor(descriptor),
49 m_blockSize(blockSize),
55 init(idealChannelCount);
121 LADSPAPluginInstance::ParameterList
130 ParameterDescriptor pd;
134 pd.name = pd.identifier;
142 pd.isQuantized =
false;
144 pd.isQuantized =
true;
148 bool haveLabels =
false;
151 if (pd.isQuantized && pd.quantizeStep == 1.0) {
153 lrdf_defaults *defaults =
157 if (defaults->count > 0) {
158 std::map<int, std::string> values;
160 for (
size_t i = 0; i < defaults->count; ++i) {
161 v = size_t(lrintf(fabsf(defaults->items[i].value)));
162 values[v] = defaults->items[i].label;
164 for (
size_t i = 0; i <= v; ++i) {
165 pd.valueNames.push_back(values[i]);
169 lrdf_free_setting_values(defaults);
175 pd.name = QString(pd.name.c_str())
176 .replace(QRegExp(
"\\([^\\(\\)]+=[^\\(\\)]+\\)$"),
"")
179 static QRegExp unitRE(
"[\\[\\(]([A-Za-z0-9/]+)[\\)\\]]$");
180 if (unitRE.indexIn(pd.name.c_str()) >= 0) {
181 pd.unit = unitRE.cap(1).toStdString();
182 pd.name = QString(pd.name.c_str())
183 .replace(unitRE,
"").toStdString();
211 SVDEBUG <<
"LADSPAPluginInstance::setParameter: Found id " 212 <<
id <<
" at control port " << i << endl;
224 SVDEBUG <<
"LADSPAPluginInstance::init(" << idealChannelCount <<
"): plugin has " 230 for (
unsigned long i = 0; i <
m_descriptor->PortCount; ++i) {
232 if (LADSPA_IS_PORT_AUDIO(
m_descriptor->PortDescriptors[i])) {
234 if (LADSPA_IS_PORT_INPUT(
m_descriptor->PortDescriptors[i])) {
236 SVDEBUG <<
"LADSPAPluginInstance::init: port " << i <<
" is audio in" << endl;
241 SVDEBUG <<
"LADSPAPluginInstance::init: port " << i <<
" is audio out" << endl;
246 }
else if (LADSPA_IS_PORT_CONTROL(
m_descriptor->PortDescriptors[i])) {
248 if (LADSPA_IS_PORT_INPUT(
m_descriptor->PortDescriptors[i])) {
251 SVDEBUG <<
"LADSPAPluginInstance::init: port " << i <<
" is control in" << endl;
253 LADSPA_Data *data =
new LADSPA_Data(0.0);
255 std::pair<unsigned long, LADSPA_Data*>(i, data));
260 SVDEBUG <<
"LADSPAPluginInstance::init: port " << i <<
" is control out" << endl;
262 LADSPA_Data *data =
new LADSPA_Data(0.0);
264 std::pair<unsigned long, LADSPA_Data*>(i, data));
268 cerr <<
"Wooo! We have a latency port!" << endl;
277 SVDEBUG <<
"LADSPAPluginInstance::init - " 278 <<
"unrecognised port type" << endl;
284 if (idealChannelCount > 0) {
302 run(Vamp::RealTime::zeroTime);
345 SVDEBUG <<
"LADSPAPluginInstance::~LADSPAPluginInstance" << endl;
386 cout <<
"LADSPAPluginInstance::instantiate - plugin unique id = " 391 cerr <<
"Bad plugin: plugin id " <<
m_descriptor->UniqueID
393 <<
" has no instantiate method!" << endl;
419 assert(
sizeof(LADSPA_Data) ==
sizeof(
float));
420 assert(
sizeof(
sample_t) ==
sizeof(
float));
423 int inbuf = 0, outbuf = 0;
482 if (value < f->getPortMinimum(
m_descriptor, portNumber)) {
566 cerr <<
"Bad plugin: plugin id " <<
m_descriptor->UniqueID
568 <<
" has no cleanup method!" << endl;
virtual void setParameter(std::string, float)
sample_t ** m_inputBuffers
virtual float getParameterDefault(unsigned int parameter) const
virtual ~LADSPAPluginInstance()
virtual ParameterList getParameterDescriptors() const
int getPortDisplayHint(const LADSPA_Descriptor *, int port)
std::vector< LADSPA_Handle > m_instanceHandles
virtual void setParameterValue(unsigned int parameter, float value)
virtual std::string getMaker() const
virtual int getPluginVersion() const
std::vector< std::pair< unsigned long, LADSPA_Data * > > m_controlPortsOut
virtual float getParameter(std::string) const
float getPortDefault(const LADSPA_Descriptor *, int port)
virtual void run(const Vamp::RealTime &rt, size_t count=0)
Run for one block, starting at the given time.
float getPortMaximum(const LADSPA_Descriptor *, int port)
float getPortQuantization(const LADSPA_Descriptor *, int port)
virtual float getParameterValue(unsigned int parameter) const
virtual int getParameterDisplayHint(unsigned int parameter) const
virtual void setIdealChannelCount(size_t channels)
void instantiate(unsigned long sampleRate)
virtual std::string getName() const
virtual size_t getAudioInputCount() const
virtual std::string getIdentifier() const
std::vector< std::pair< unsigned long, LADSPA_Data * > > m_controlPortsIn
void init(int idealChannelCount=0)
std::vector< int > m_audioPortsOut
RealTimePluginFactory * m_factory
std::vector< int > m_audioPortsIn
LADSPAPluginInstance(RealTimePluginFactory *factory, int client, QString identifier, int position, unsigned long sampleRate, size_t blockSize, int idealChannelCount, const LADSPA_Descriptor *descriptor)
sample_t ** m_outputBuffers
virtual unsigned int getParameterCount() const
virtual size_t getLatency()
virtual float getControlOutputValue(size_t n) const
virtual std::string getCopyright() const
const LADSPA_Descriptor * m_descriptor
float getPortMinimum(const LADSPA_Descriptor *, int port)
virtual std::string getDescription() const
virtual bool isOK() const