24
25
#include "globaldefs.h"
28
//#include "stringparam.h"
35
50
class MidiController;
37
52
//---------------------------------------------------------
53
// PluginWidgetFactory
54
//---------------------------------------------------------
56
class PluginWidgetFactory : public QWidgetFactory
59
virtual QWidget* createWidget(const QString& className, QWidget* parent, const char* name) const;
62
//---------------------------------------------------------
39
64
//---------------------------------------------------------
45
72
LADSPA_Descriptor_Function ladspa;
46
73
const LADSPA_Descriptor *plugin;
74
unsigned long _uniqueID;
82
const DSSI_Descriptor* dssi_descr;
85
//LADSPA_PortDescriptor* _portDescriptors;
86
unsigned long _portCount;
87
unsigned long _inports;
88
unsigned long _outports;
89
unsigned long _controlInPorts;
90
unsigned long _controlOutPorts;
91
std::vector<unsigned long> rpIdx; // Port number to control input index. Item is -1 if it's not a control input.
49
93
bool _inPlaceCapable;
53
LADSPA_Descriptor_Function df, const LADSPA_Descriptor* d, bool inPlace);
55
QString label() const { return QString(plugin->Label); }
56
QString name() const { return QString(plugin->Name); }
57
unsigned long id() const { return plugin->UniqueID; }
58
QString maker() const { return QString(plugin->Maker); }
59
QString copyright() const { return QString(plugin->Copyright); }
60
QString lib() const { return fi.baseName(true); }
61
QString path() const { return fi.dirPath(); }
62
int references() const { return _references; }
63
int incReferences(int n) { return _references += n; }
64
int instNo() { return _instNo++; }
66
LADSPA_Handle instantiate() {
67
return plugin->instantiate(plugin, sampleRate);
96
Plugin(QFileInfo* f, const LADSPA_Descriptor* d, bool isDssi = false);
99
QString label() const { return _label; }
100
QString name() const { return _name; }
101
unsigned long id() const { return _uniqueID; }
102
QString maker() const { return _maker; }
103
QString copyright() const { return _copyright; }
104
QString lib(bool complete = true) const { return fi.baseName(complete); }
105
QString dirPath(bool complete = true) const { return fi.dirPath(complete); }
106
QString filePath() const { return fi.filePath(); }
107
int references() const { return _references; }
108
int incReferences(int);
109
int instNo() { return _instNo++; }
111
bool isDssiPlugin() const { return _isDssi; }
113
LADSPA_Handle instantiate();
69
114
void activate(LADSPA_Handle handle) {
115
if (plugin && plugin->activate)
71
116
plugin->activate(handle);
73
118
void deactivate(LADSPA_Handle handle) {
74
if (plugin->deactivate)
119
if (plugin && plugin->deactivate)
75
120
plugin->deactivate(handle);
77
122
void cleanup(LADSPA_Handle handle) {
123
if (plugin && plugin->cleanup)
79
124
plugin->cleanup(handle);
81
126
void connectPort(LADSPA_Handle handle, int port, float* value) {
82
plugin->connect_port(handle, port, value);
128
plugin->connect_port(handle, port, value);
84
130
void apply(LADSPA_Handle handle, int n) {
85
plugin->run(handle, n);
87
int ports() { return plugin->PortCount; }
88
double defaultValue(unsigned int port) const;
89
LADSPA_PortDescriptor portd(int k) const {
90
return plugin->PortDescriptors[k];
92
void range(int i, float*, float*) const;
93
LADSPA_PortRangeHint range(int i) {
132
plugin->run(handle, n);
136
int oscConfigure(LADSPA_Handle /*handle*/, const char* /*key*/, const char* /*value*/);
139
//int ports() { return plugin ? plugin->PortCount : 0; }
140
unsigned long ports() { return _portCount; }
142
LADSPA_PortDescriptor portd(unsigned long k) const {
143
return plugin ? plugin->PortDescriptors[k] : 0;
144
//return _portDescriptors[k];
147
LADSPA_PortRangeHint range(unsigned long i) {
149
//return plugin ? plugin->PortRangeHints[i] : 0;
94
150
return plugin->PortRangeHints[i];
97
const char* portName(int i) {
98
return plugin->PortNames[i];
153
double defaultValue(unsigned long port) const;
154
void range(unsigned long i, float*, float*) const;
156
const char* portName(unsigned long i) {
157
return plugin ? plugin->PortNames[i] : 0;
100
int inports() const { return _inports; }
101
int outports() const { return _outports; }
102
bool inPlaceCapable() const { return _inPlaceCapable; }
160
// Returns (int)-1 if not an input control.
161
unsigned long port2InCtrl(unsigned long p) { return p >= rpIdx.size() ? (unsigned long)-1 : rpIdx[p]; }
163
unsigned long inports() const { return _inports; }
164
unsigned long outports() const { return _outports; }
165
unsigned long controlInPorts() const { return _controlInPorts; }
166
unsigned long controlOutPorts() const { return _controlOutPorts; }
167
bool inPlaceCapable() const { return _inPlaceCapable; }
105
170
typedef std::list<Plugin>::iterator iPlugin;
234
bool on() const { return _on; }
235
void setOn(bool val) { _on = val; }
236
int pluginID() { return plugin()->id(); }
237
int id() { return _id; }
238
QString pluginLabel() const { return _plugin->label(); }
239
QString name() const { return _name; }
241
AudioTrack* track() { return _track; }
243
void enableController(int i, bool v = true) { controls[i].enCtrl = v; }
244
bool controllerEnabled(int i) const { return controls[i].enCtrl; }
245
bool controllerEnabled2(int i) const { return controls[i].en2Ctrl; }
246
void updateControllers();
248
void writeConfiguration(int level, Xml& xml);
249
bool readConfiguration(Xml& xml, bool readPreset=false);
251
int parameters() const { return controlPorts; }
252
void setParam(int i, double val) { controls[i].tmpVal = val; }
253
double param(int i) const { return controls[i].val; }
254
const char* paramName(int i) { return _plugin->portName(controls[i].idx); }
255
LADSPA_PortRangeHint range(int i)
257
return _plugin->range(controls[i].idx);
262
//---------------------------------------------------------
264
//---------------------------------------------------------
269
virtual bool on() const = 0;
270
virtual void setOn(bool /*val*/) = 0;
271
virtual int pluginID() = 0;
272
virtual int id() = 0;
273
virtual QString pluginLabel() const = 0;
274
virtual QString name() const = 0;
276
virtual AudioTrack* track() = 0;
278
virtual void enableController(int /*i*/, bool v = true) = 0;
279
virtual bool controllerEnabled(int /*i*/) const = 0;
280
virtual bool controllerEnabled2(int /*i*/) const = 0;
281
virtual void updateControllers() = 0;
283
virtual void writeConfiguration(int /*level*/, Xml& /*xml*/) = 0;
284
virtual bool readConfiguration(Xml& /*xml*/, bool readPreset=false) = 0;
286
virtual int parameters() const = 0;
287
virtual void setParam(int /*i*/, double /*val*/) = 0;
288
virtual double param(int /*i*/) const = 0;
289
virtual const char* paramName(int /*i*/) = 0;
290
virtual LADSPA_PortRangeHint range(int /*i*/) = 0;
164
293
//---------------------------------------------------------
166
295
//---------------------------------------------------------
264
411
void deactivate();
412
QString pluginLabel() const { return _plugin->label(); }
265
413
QString label() const { return _label; }
266
414
QString name() const { return _name; }
267
415
CtrlValueType valueType() const;
268
416
QString lib() const { return _plugin->lib(); }
419
OscEffectIF& oscIF() { return _oscif; }
421
int oscConfigure(lo_arg**);
422
int oscControl(lo_arg**);
423
//int oscUpdate(lo_arg**);
424
//int oscExiting(lo_arg**);
427
int oscControl(unsigned long /*dssiPort*/, float /*val*/);
428
int oscConfigure(const char */*key*/, const char */*val*/);
270
433
void writeConfiguration(int level, Xml& xml);
271
434
bool readConfiguration(Xml& xml, bool readPreset=false);
272
435
bool loadControl(Xml& xml);
273
436
bool setControl(const QString& s, double val);
275
438
void showGui(bool);
439
bool isDssiPlugin() const { return _plugin->isDssiPlugin(); }
440
void showNativeGui();
441
void showNativeGui(bool);
442
bool isShowNativeGuiPending() { return _showNativeGuiPending; }
276
443
bool guiVisible();
444
bool nativeGuiVisible();
277
445
int parameters() const { return controlPorts; }
278
446
void setParam(int i, double val) { controls[i].tmpVal = val; }
279
447
double param(int i) const { return controls[i].val; }