~ubuntu-branches/ubuntu/wily/muse/wily-proposed

« back to all changes in this revision

Viewing changes to muse/plugin.h

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2011-12-03 17:12:54 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20111203171254-28b1j4lpb46r5jtl
Tags: 2.0~rc1-1
* New upstream RC release.
* Refresh patches, remove those patches not needed anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
//  $Id: plugin.h,v 1.9.2.13 2009/12/06 01:25:21 terminator356 Exp $
5
5
//
6
6
//  (C) Copyright 2000 Werner Schweer (ws@seh.de)
 
7
//  (C) Copyright 2011 Tim E. Real (terminator356 on sourceforge)
 
8
//
 
9
//  This program is free software; you can redistribute it and/or
 
10
//  modify it under the terms of the GNU General Public License
 
11
//  as published by the Free Software Foundation; version 2 of
 
12
//  the License, or (at your option) any later version.
 
13
//
 
14
//  This program is distributed in the hope that it will be useful,
 
15
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
//  GNU General Public License for more details.
 
18
//
 
19
//  You should have received a copy of the GNU General Public License
 
20
//  along with this program; if not, write to the Free Software
 
21
//  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
22
//
7
23
//=========================================================
8
24
 
9
25
#ifndef __PLUGIN_H__
45
61
class QToolButton;
46
62
class QTreeWidget;
47
63
 
 
64
namespace MusEGui {
 
65
class PluginGui;
 
66
}
 
67
 
 
68
 
 
69
namespace MusECore {
 
70
class AudioTrack;
48
71
class Xml;
49
 
class Slider;
50
 
class DoubleLabel;
51
 
class AudioTrack;
 
72
 
52
73
class MidiController;
53
74
 
54
75
//---------------------------------------------------------
55
 
//   PluginLoader
56
 
//---------------------------------------------------------
57
 
 
58
 
class PluginLoader : public QUiLoader
59
 
{
60
 
   public:
61
 
      virtual QWidget* createWidget(const QString & className, QWidget * parent = 0, const QString & name = QString()); 
62
 
      PluginLoader(QObject * parent = 0) : QUiLoader(parent) {}
63
 
};
64
 
 
65
 
/*
66
 
//---------------------------------------------------------
67
 
//   PluginBase
68
 
//---------------------------------------------------------
69
 
 
70
 
class PluginBase 
71
 
{
72
 
   protected:
73
 
      void range(unsigned long i, float*, float*) const;
74
 
};
75
 
*/   
76
 
   
77
 
//---------------------------------------------------------
78
76
//   Plugin
79
77
//---------------------------------------------------------
80
78
 
145
143
            if (plugin && plugin->cleanup)
146
144
                  plugin->cleanup(handle);
147
145
            }
148
 
      //void connectPort(LADSPA_Handle handle, int port, float* value) {
149
 
      void connectPort(LADSPA_Handle handle, unsigned long port, float* value) {     // p4.0.21
 
146
      void connectPort(LADSPA_Handle handle, unsigned long port, float* value) {     
150
147
            if(plugin)
151
148
              plugin->connect_port(handle, port, value);
152
149
            }
153
 
      //void apply(LADSPA_Handle handle, int n) {
154
 
      void apply(LADSPA_Handle handle, unsigned long n) {                            // p4.0.21
 
150
      void apply(LADSPA_Handle handle, unsigned long n) {                            
155
151
            if(plugin)
156
152
              plugin->run(handle, n);
157
153
            }
160
156
      int oscConfigure(LADSPA_Handle /*handle*/, const char* /*key*/, const char* /*value*/);
161
157
      #endif
162
158
      
163
 
      //int ports() { return plugin ? plugin->PortCount : 0; }
164
159
      unsigned long ports() { return _portCount; }
165
160
      
166
161
      LADSPA_PortDescriptor portd(unsigned long k) const {
167
162
            return plugin ? plugin->PortDescriptors[k] : 0;
168
 
            //return _portDescriptors[k];
169
163
            }
170
164
      
171
165
      LADSPA_PortRangeHint range(unsigned long i) {
174
168
            return plugin->PortRangeHints[i];
175
169
            }
176
170
 
177
 
      //double defaultValue(unsigned long port) const;
178
 
      float defaultValue(unsigned long port) const; // p4.0.21     
 
171
      float defaultValue(unsigned long port) const; 
179
172
      void range(unsigned long i, float*, float*) const;
 
173
      CtrlValueType ctrlValueType(unsigned long /*i*/) const;
 
174
      CtrlList::Mode ctrlMode(unsigned long /*i*/) const;
180
175
      
181
176
      const char* portName(unsigned long i) {
182
177
            return plugin ? plugin->PortNames[i] : 0;
190
185
      unsigned long controlInPorts() const  { return _controlInPorts; }
191
186
      unsigned long controlOutPorts() const { return _controlOutPorts; }
192
187
      bool inPlaceCapable() const           { return _inPlaceCapable; }
193
 
      
194
 
      /*
195
 
      bool isLog(int k) const {
196
 
            LADSPA_PortRangeHint r = plugin->PortRangeHints[pIdx[k]];
197
 
            return LADSPA_IS_HINT_LOGARITHMIC(r.HintDescriptor);
198
 
            }
199
 
      bool isBool(int k) const {
200
 
            return LADSPA_IS_HINT_TOGGLED(plugin->PortRangeHints[pIdx[k]].HintDescriptor);
201
 
            }
202
 
      bool isInt(int k) const {
203
 
            LADSPA_PortRangeHint r = plugin->PortRangeHints[pIdx[k]];
204
 
            return LADSPA_IS_HINT_INTEGER(r.HintDescriptor);
205
 
            }
206
 
      */      
207
188
      };
208
189
 
209
190
typedef std::list<Plugin>::iterator iPlugin;
238
219
      };
239
220
 
240
221
//---------------------------------------------------------
241
 
//   GuiParam
242
 
//---------------------------------------------------------
243
 
 
244
 
struct GuiParam {
245
 
      enum {
246
 
            GUI_SLIDER, GUI_SWITCH, GUI_METER
247
 
            };
248
 
      int type;
249
 
      int hint;
250
 
      
251
 
      DoubleLabel* label;
252
 
      QWidget* actuator;  // Slider or Toggle Button (SWITCH)
253
 
      };
254
 
 
255
 
//---------------------------------------------------------
256
 
//   GuiWidgets
257
 
//---------------------------------------------------------
258
 
 
259
 
struct GuiWidgets {
260
 
      enum {
261
 
            SLIDER, DOUBLE_LABEL, QCHECKBOX, QCOMBOBOX
262
 
            };
263
 
      QWidget* widget;
264
 
      int type;
265
 
      //int param;
266
 
      unsigned long param;   // p4.0.21
267
 
      };
268
 
 
269
 
class PluginI;
270
 
class PluginGui;
271
 
 
272
 
/*
273
 
class PluginBase 
274
 
{
275
 
   public:
276
 
      bool on() const        { return _on; }
277
 
      void setOn(bool val)   { _on = val; }
278
 
      int pluginID()                { return plugin()->id(); }
279
 
      int id()                      { return _id; }
280
 
      QString pluginLabel() const    { return _plugin->label(); }
281
 
      QString name() const           { return _name; }
282
 
      
283
 
      AudioTrack* track()           { return _track; }
284
 
      
285
 
      void enableController(int i, bool v = true)   { controls[i].enCtrl = v; }
286
 
      bool controllerEnabled(int i) const           { return controls[i].enCtrl; }
287
 
      bool controllerEnabled2(int i) const          { return controls[i].en2Ctrl; }
288
 
      void updateControllers();
289
 
      
290
 
      void writeConfiguration(int level, Xml& xml);
291
 
      bool readConfiguration(Xml& xml, bool readPreset=false);
292
 
      
293
 
      int parameters() const           { return controlPorts; }
294
 
      void setParam(int i, double val) { controls[i].tmpVal = val; }
295
 
      double param(int i) const        { return controls[i].val; }
296
 
      const char* paramName(int i)     { return _plugin->portName(controls[i].idx); }
297
 
      LADSPA_PortRangeHint range(int i) 
298
 
      {
299
 
            return _plugin->range(controls[i].idx);
300
 
      }
301
 
};
302
 
*/
303
 
 
304
 
//---------------------------------------------------------
305
222
//   PluginIBase 
306
223
//---------------------------------------------------------
307
224
 
309
226
{
310
227
   protected:
311
228
      ControlFifo _controlFifo;
312
 
      PluginGui* _gui;
 
229
      MusEGui::PluginGui* _gui;
313
230
 
314
231
      void makeGui();
315
232
 
318
235
      ~PluginIBase(); 
319
236
      virtual bool on() const = 0;       
320
237
      virtual void setOn(bool /*val*/) = 0;   
321
 
      //virtual int pluginID() = 0;
322
 
      virtual unsigned long pluginID() = 0;        // p4.0.21
 
238
      virtual unsigned long pluginID() = 0;        
323
239
      virtual int id() = 0;
324
240
      virtual QString pluginLabel() const = 0;  
325
241
      virtual QString name() const = 0;
329
245
      
330
246
      virtual AudioTrack* track() = 0;          
331
247
      
332
 
      //virtual void enableController(int /*i*/, bool /*v*/ = true) = 0; 
333
 
      //virtual bool controllerEnabled(int /*i*/) const = 0;          
334
 
      //virtual bool controllerEnabled2(int /*i*/) const = 0;          
335
 
      virtual void enableController(unsigned long /*i*/, bool /*v*/ = true) = 0;   // p4.0.21
 
248
      virtual void enableController(unsigned long /*i*/, bool /*v*/ = true) = 0;   
336
249
      virtual bool controllerEnabled(unsigned long /*i*/) const = 0;          
337
250
      virtual bool controllerEnabled2(unsigned long /*i*/) const = 0;          
338
251
      virtual void updateControllers() = 0;
340
253
      virtual void writeConfiguration(int /*level*/, Xml& /*xml*/) = 0;
341
254
      virtual bool readConfiguration(Xml& /*xml*/, bool /*readPreset*/=false) = 0;
342
255
      
343
 
      //virtual int parameters() const = 0;          
344
 
      //virtual void setParam(int /*i*/, double /*val*/) = 0; 
345
 
      //virtual double param(int /*i*/) const = 0;        
346
 
      //virtual const char* paramName(int /*i*/) = 0;     
347
 
      //virtual LADSPA_PortRangeHint range(int /*i*/) = 0; 
348
 
      virtual unsigned long parameters() const = 0;                  // p4.0.21
 
256
      virtual unsigned long parameters() const = 0;                  
349
257
      virtual unsigned long parametersOut() const = 0;
350
258
      virtual void setParam(unsigned long /*i*/, float /*val*/) = 0;
351
259
      virtual float param(unsigned long /*i*/) const = 0;            
354
262
      virtual const char* paramOutName(unsigned long /*i*/) = 0;
355
263
      virtual LADSPA_PortRangeHint range(unsigned long /*i*/) = 0;
356
264
      virtual LADSPA_PortRangeHint rangeOut(unsigned long /*i*/) = 0;
 
265
      
 
266
      virtual CtrlValueType ctrlValueType(unsigned long /*i*/) const = 0;
 
267
      virtual CtrlList::Mode ctrlMode(unsigned long /*i*/) const = 0;
357
268
      QString dssi_ui_filename() const;
358
269
      
359
 
      //virtual void showGui(bool) = 0;         // p4.0.20
360
 
      //virtual void showNativeGui(bool) = 0;   //
361
 
      PluginGui* gui() const { return _gui; }
 
270
      MusEGui::PluginGui* gui() const { return _gui; }
362
271
      void deleteGui();
363
272
};
364
273
 
365
 
//---------------------------------------------------------
366
 
//   PluginGui
367
 
//---------------------------------------------------------
368
 
 
369
 
class PluginGui : public QMainWindow {
370
 
      Q_OBJECT
371
 
 
372
 
      //PluginI* plugin;        // plugin instance
373
 
      PluginIBase* plugin;        // plugin instance
374
 
      
375
 
      GuiParam* params;
376
 
      GuiParam* paramsOut;
377
 
      //int nobj;               
378
 
      unsigned long nobj;             // number of widgets in gw      // p4.0.21
379
 
      GuiWidgets* gw;
380
 
 
381
 
      QAction* onOff;
382
 
      QWidget* mw;            // main widget
383
 
      QScrollArea* view;
384
 
 
385
 
      void updateControls();
386
 
      void getPluginConvertedValues(LADSPA_PortRangeHint range,
387
 
                     double &lower, double &upper, double &dlower, double &dupper, double &dval);
388
 
   private slots:
389
 
      void load();
390
 
      void save();
391
 
      void bypassToggled(bool);
392
 
      void sliderChanged(double, int);
393
 
      void labelChanged(double, int);
394
 
      void guiParamChanged(int);
395
 
      void ctrlPressed(int);
396
 
      void ctrlReleased(int);
397
 
      void guiParamPressed(int);
398
 
      void guiParamReleased(int);
399
 
      void guiSliderPressed(int);
400
 
      void guiSliderReleased(int);
401
 
      void ctrlRightClicked(const QPoint &, int);
402
 
      void guiSliderRightClicked(const QPoint &, int);
403
 
 
404
 
   protected slots:
405
 
      void heartBeat();
406
 
 
 
274
/*
 
275
class PluginBase 
 
276
{
407
277
   public:
408
 
      //PluginGui(PluginI*);
409
 
      PluginGui(PluginIBase*);
410
 
      
411
 
      ~PluginGui();
412
 
      void setOn(bool);
413
 
      void updateValues();
414
 
      };
 
278
      bool on() const        { return _on; }
 
279
      void setOn(bool val)   { _on = val; }
 
280
      int pluginID()                { return plugin()->id(); }
 
281
      int id()                      { return _id; }
 
282
      QString pluginLabel() const    { return _plugin->label(); }
 
283
      QString name() const           { return _name; }
 
284
      
 
285
      AudioTrack* track()           { return _track; }
 
286
      
 
287
      void enableController(int i, bool v = true)   { controls[i].enCtrl = v; }
 
288
      bool controllerEnabled(int i) const           { return controls[i].enCtrl; }
 
289
      bool controllerEnabled2(int i) const          { return controls[i].en2Ctrl; }
 
290
      void updateControllers();
 
291
      
 
292
      void writeConfiguration(int level, Xml& xml);
 
293
      bool readConfiguration(Xml& xml, bool readPreset=false);
 
294
      
 
295
      int parameters() const           { return controlPorts; }
 
296
      void setParam(int i, double val) { controls[i].tmpVal = val; }
 
297
      double param(int i) const        { return controls[i].val; }
 
298
      const char* paramName(int i)     { return _plugin->portName(controls[i].idx); }
 
299
      LADSPA_PortRangeHint range(int i) 
 
300
      {
 
301
            return _plugin->range(controls[i].idx);
 
302
      }
 
303
};
 
304
*/
415
305
 
416
306
//---------------------------------------------------------
417
307
//   PluginI
421
311
#define AUDIO_IN (LADSPA_PORT_AUDIO  | LADSPA_PORT_INPUT)
422
312
#define AUDIO_OUT (LADSPA_PORT_AUDIO | LADSPA_PORT_OUTPUT)
423
313
 
424
 
//class PluginI {
425
314
class PluginI : public PluginIBase {
426
315
      Plugin* _plugin;
427
316
      int channel;
433
322
      Port* controls;
434
323
      Port* controlsOut;
435
324
 
436
 
      //int controlPorts;
437
 
      //int controlOutPorts;
438
 
      unsigned long controlPorts;      // p4.0.21
439
 
      unsigned long controlOutPorts;   // 
 
325
      unsigned long controlPorts;      
 
326
      unsigned long controlOutPorts;    
440
327
      
441
328
      ///PluginGui* _gui;
442
329
      bool _on;
468
355
      
469
356
      void setTrack(AudioTrack* t)  { _track = t; }
470
357
      AudioTrack* track()           { return _track; }
471
 
      //int pluginID()                { return _plugin->id(); }
472
 
      unsigned long pluginID()           { return _plugin->id(); }    // p4.0.21
 
358
      unsigned long pluginID()      { return _plugin->id(); }    
473
359
      void setID(int i);
474
360
      int id()                      { return _id; }
475
361
      void updateControllers();
476
362
      
477
363
      bool initPluginInstance(Plugin*, int channels);
478
364
      void setChannels(int);
479
 
      //void connect(int ports, float** src, float** dst);
480
 
      //void apply(int n);
481
 
      //void connect(unsigned ports, float** src, float** dst);   
482
 
      //void apply(unsigned n);   
483
 
      void connect(unsigned long ports, unsigned long offset, float** src, float** dst); // p4.0.21
484
 
      void apply(unsigned long n, unsigned long ports, float** bufIn, float** bufOut);   // 
 
365
      void connect(unsigned long ports, unsigned long offset, float** src, float** dst); 
 
366
      void apply(unsigned long n, unsigned long ports, float** bufIn, float** bufOut);    
485
367
 
486
 
      //void enableController(int i, bool v = true)   { controls[i].enCtrl = v; }
487
 
      //bool controllerEnabled(int i) const           { return controls[i].enCtrl; }
488
 
      //void enable2Controller(int i, bool v = true)  { controls[i].en2Ctrl = v; }
489
 
      //bool controllerEnabled2(int i) const          { return controls[i].en2Ctrl; }
490
 
      void enableController(unsigned long i, bool v = true)   { controls[i].enCtrl = v; }      // p4.0.21
 
368
      void enableController(unsigned long i, bool v = true)   { controls[i].enCtrl = v; }      
491
369
      bool controllerEnabled(unsigned long i) const           { return controls[i].enCtrl; }   
492
370
      void enable2Controller(unsigned long i, bool v = true)  { controls[i].en2Ctrl = v; }     
493
371
      bool controllerEnabled2(unsigned long i) const          { return controls[i].en2Ctrl; }  
499
377
      QString pluginLabel() const    { return _plugin->label(); }
500
378
      QString label() const          { return _label; }
501
379
      QString name() const           { return _name; }
502
 
      CtrlValueType valueType() const;
503
380
      QString lib() const            { return _plugin->lib(); }
504
381
      QString dirPath() const        { return _plugin->dirPath(); }
505
382
      QString fileName() const       { return _plugin->fileName(); }
522
399
      void writeConfiguration(int level, Xml& xml);
523
400
      bool readConfiguration(Xml& xml, bool readPreset=false);
524
401
      bool loadControl(Xml& xml);
525
 
      //bool setControl(const QString& s, double val);
526
 
      bool setControl(const QString& s, float val);    // p4.0.21
 
402
      bool setControl(const QString& s, float val);    
527
403
      void showGui();
528
404
      void showGui(bool);
529
405
      bool isDssiPlugin() const { return _plugin->isDssiPlugin(); }  
533
409
      bool guiVisible();
534
410
      bool nativeGuiVisible();
535
411
 
536
 
      //int parameters() const           { return controlPorts; }
537
 
      //void setParam(int i, double val) { controls[i].tmpVal = val; }
538
 
      //double param(int i) const        { return controls[i].val; }
539
 
      //double defaultValue(unsigned int param) const;
540
 
      //const char* paramName(int i)     { return _plugin->portName(controls[i].idx); }
541
 
      //LADSPA_PortDescriptor portd(int i) const { return _plugin->portd(controls[i].idx); }
542
 
      //void range(int i, float* min, float* max) const { _plugin->range(controls[i].idx, min, max); }
543
 
      //bool isAudioIn(int k) { return (_plugin->portd(k) & AUDIO_IN) == AUDIO_IN; }
544
 
      //bool isAudioOut(int k) { return (_plugin->portd(k) & AUDIO_OUT) == AUDIO_OUT; }
545
 
      //LADSPA_PortRangeHint range(int i) { return _plugin->range(controls[i].idx); }
546
 
      // p4.0.21
547
412
      unsigned long parameters() const           { return controlPorts; }    
548
413
      unsigned long parametersOut() const           { return controlOutPorts; }
549
 
      //void setParam(unsigned i, float val) { controls[i].tmpVal = val; }
550
414
      void setParam(unsigned long i, float val);  
551
415
      float param(unsigned long i) const        { return controls[i].val; }       
552
416
      float paramOut(unsigned long i) const        { return controlsOut[i].val; }
560
424
      LADSPA_PortRangeHint range(unsigned long i) { return _plugin->range(controls[i].idx); }
561
425
      LADSPA_PortRangeHint rangeOut(unsigned long i) { return _plugin->range(controlsOut[i].idx); }
562
426
      bool inPlaceCapable() const { return _plugin->inPlaceCapable(); }
 
427
      CtrlValueType ctrlValueType(unsigned long i) const { return _plugin->ctrlValueType(controls[i].idx); }
 
428
      CtrlList::Mode ctrlMode(unsigned long i) const { return _plugin->ctrlMode(controls[i].idx); };
563
429
      };
564
430
 
565
431
//---------------------------------------------------------
567
433
//    chain of connected efx inserts
568
434
//---------------------------------------------------------
569
435
 
570
 
//const int PipelineDepth = 4;  // Moved to globaldefs.h
571
 
 
572
436
class Pipeline : public std::vector<PluginI*> {
573
437
      float* buffer[MAX_CHANNELS];
574
438
   
592
456
      void deleteAllGuis();
593
457
      bool guiVisible(int);
594
458
      bool nativeGuiVisible(int);
595
 
      //void apply(int ports, unsigned long nframes, float** buffer);
596
 
      void apply(unsigned long ports, unsigned long nframes, float** buffer);  // p4.0.21
 
459
      void apply(unsigned long ports, unsigned long nframes, float** buffer);  
597
460
      void move(int idx, bool up);
598
461
      bool empty(int idx) const;
599
462
      void setChannels(int);
602
465
typedef Pipeline::iterator iPluginI;
603
466
typedef Pipeline::const_iterator ciPluginI;
604
467
 
 
468
extern void initPlugins();
 
469
 
 
470
extern bool ladspaDefaultValue(const LADSPA_Descriptor* plugin, unsigned long port, float* val);
 
471
extern void ladspaControlRange(const LADSPA_Descriptor* plugin, unsigned long port, float* min, float* max);
 
472
extern bool ladspa2MidiControlValues(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum, int* min, int* max, int* def);
 
473
extern float midi2LadspaValue(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum, int val);
 
474
extern CtrlValueType ladspaCtrlValueType(const LADSPA_Descriptor* plugin, int port);
 
475
extern CtrlList::Mode ladspaCtrlMode(const LADSPA_Descriptor* plugin, int port);
 
476
//extern MidiController* ladspa2MidiController(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum);
 
477
 
 
478
} // namespace MusECore
 
479
 
 
480
 
 
481
namespace MusEGui {
 
482
class DoubleLabel;
 
483
class PluginGui;
 
484
 
 
485
//---------------------------------------------------------
 
486
//   PluginLoader
 
487
//---------------------------------------------------------
 
488
 
 
489
class PluginLoader : public QUiLoader
 
490
{
 
491
   public:
 
492
      virtual QWidget* createWidget(const QString & className, QWidget * parent = 0, const QString & name = QString()); 
 
493
      PluginLoader(QObject * parent = 0) : QUiLoader(parent) {}
 
494
};
 
495
 
 
496
//---------------------------------------------------------
 
497
//   GuiParam
 
498
//---------------------------------------------------------
 
499
 
 
500
struct GuiParam {
 
501
      enum {
 
502
            GUI_SLIDER, GUI_SWITCH, GUI_METER
 
503
            };
 
504
      int type;
 
505
      int hint;
 
506
      
 
507
      MusEGui::DoubleLabel* label;
 
508
      QWidget* actuator;  // Slider or Toggle Button (SWITCH)
 
509
      };
 
510
 
 
511
//---------------------------------------------------------
 
512
//   GuiWidgets
 
513
//---------------------------------------------------------
 
514
 
 
515
struct GuiWidgets {
 
516
      enum {
 
517
            SLIDER, DOUBLE_LABEL, QCHECKBOX, QCOMBOBOX
 
518
            };
 
519
      QWidget* widget;
 
520
      int type;
 
521
      unsigned long param;   
 
522
      };
 
523
 
 
524
//---------------------------------------------------------
 
525
//   PluginGui
 
526
//---------------------------------------------------------
 
527
 
 
528
class PluginGui : public QMainWindow {
 
529
      Q_OBJECT
 
530
 
 
531
      MusECore::PluginIBase* plugin;        // plugin instance
 
532
      
 
533
      GuiParam* params;
 
534
      GuiParam* paramsOut;
 
535
      unsigned long nobj;             // number of widgets in gw      
 
536
      GuiWidgets* gw;
 
537
 
 
538
      QAction* onOff;
 
539
      QWidget* mw;            // main widget
 
540
      QScrollArea* view;
 
541
 
 
542
      void updateControls();
 
543
      void getPluginConvertedValues(LADSPA_PortRangeHint range,
 
544
                     double &lower, double &upper, double &dlower, double &dupper, double &dval);
 
545
   private slots:
 
546
      void load();
 
547
      void save();
 
548
      void bypassToggled(bool);
 
549
      void sliderChanged(double, int);
 
550
      void labelChanged(double, int);
 
551
      void guiParamChanged(int);
 
552
      void ctrlPressed(int);
 
553
      void ctrlReleased(int);
 
554
      void guiParamPressed(int);
 
555
      void guiParamReleased(int);
 
556
      void guiSliderPressed(int);
 
557
      void guiSliderReleased(int);
 
558
      void ctrlRightClicked(const QPoint &, int);
 
559
      void guiSliderRightClicked(const QPoint &, int);
 
560
 
 
561
   protected slots:
 
562
      void heartBeat();
 
563
 
 
564
   public:
 
565
      PluginGui(MusECore::PluginIBase*);
 
566
      
 
567
      ~PluginGui();
 
568
      void setOn(bool);
 
569
      void updateValues();
 
570
      };
 
571
 
605
572
//---------------------------------------------------------
606
573
//   PluginDialog
607
574
//---------------------------------------------------------
620
587
 
621
588
   public:
622
589
      PluginDialog(QWidget* parent=0);
623
 
      static Plugin* getPlugin(QWidget* parent);
624
 
      Plugin* value();
 
590
      static MusECore::Plugin* getPlugin(QWidget* parent);
 
591
      MusECore::Plugin* value();
625
592
      void accept();
626
593
 
627
594
   public slots:
638
605
      static QStringList sortItems;
639
606
      };
640
607
 
641
 
extern void initPlugins();
642
 
extern PluginList plugins;
643
 
 
644
 
//extern bool ladspaDefaultValue(const LADSPA_Descriptor* plugin, int port, float* val);
645
 
//extern void ladspaControlRange(const LADSPA_Descriptor* plugin, int i, float* min, float* max);
646
 
//extern bool ladspa2MidiControlValues(const LADSPA_Descriptor* plugin, int port, int ctlnum, int* min, int* max, int* def);
647
 
//extern float midi2LadspaValue(const LADSPA_Descriptor* plugin, int port, int ctlnum, int val);
648
 
// p4.0.21
649
 
extern bool ladspaDefaultValue(const LADSPA_Descriptor* plugin, unsigned long port, float* val);
650
 
extern void ladspaControlRange(const LADSPA_Descriptor* plugin, unsigned long port, float* min, float* max);
651
 
extern bool ladspa2MidiControlValues(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum, int* min, int* max, int* def);
652
 
extern float midi2LadspaValue(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum, int val);
653
 
//extern MidiController* ladspa2MidiController(const LADSPA_Descriptor* plugin, unsigned long port, int ctlnum);
654
 
 
 
608
}
 
609
 
 
610
 
 
611
namespace MusEGlobal {
 
612
extern MusECore::PluginList plugins;
 
613
}
655
614
#endif
656
615