svcore  1.9
LADSPAPluginInstance.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2 of the
11  License, or (at your option) any later version. See the file
12  COPYING included with this distribution for more information.
13 */
14 
15 /*
16  This is a modified version of a source file from the
17  Rosegarden MIDI and audio sequencer and notation editor.
18  This file copyright 2000-2006 Chris Cannam and Richard Bown.
19 */
20 
21 #ifndef _LADSPAPLUGININSTANCE_H_
22 #define _LADSPAPLUGININSTANCE_H_
23 
24 #include <vector>
25 #include <set>
26 #include <QString>
27 
28 #include "api/ladspa.h"
29 #include "RealTimePluginInstance.h"
30 
31 // LADSPA plugin instance. LADSPA is a variable block size API, but
32 // for one reason and another it's more convenient to use a fixed
33 // block size in this wrapper.
34 //
36 {
37 public:
38  virtual ~LADSPAPluginInstance();
39 
40  virtual bool isOK() const { return m_instanceHandles.size() != 0; }
41 
42  int getClientId() const { return m_client; }
43  virtual QString getPluginIdentifier() const { return m_identifier; }
44  int getPosition() const { return m_position; }
45 
46  virtual std::string getIdentifier() const;
47  virtual std::string getName() const;
48  virtual std::string getDescription() const;
49  virtual std::string getMaker() const;
50  virtual int getPluginVersion() const;
51  virtual std::string getCopyright() const;
52 
53  virtual void run(const Vamp::RealTime &rt, size_t count = 0);
54 
55  virtual unsigned int getParameterCount() const;
56  virtual void setParameterValue(unsigned int parameter, float value);
57  virtual float getParameterValue(unsigned int parameter) const;
58  virtual float getParameterDefault(unsigned int parameter) const;
59  virtual int getParameterDisplayHint(unsigned int parameter) const;
60 
61  virtual ParameterList getParameterDescriptors() const;
62  virtual float getParameter(std::string) const;
63  virtual void setParameter(std::string, float);
64 
65  virtual size_t getBufferSize() const { return m_blockSize; }
66  virtual size_t getAudioInputCount() const { return m_instanceCount * m_audioPortsIn.size(); }
67  virtual size_t getAudioOutputCount() const { return m_instanceCount * m_audioPortsOut.size(); }
70 
71  virtual size_t getControlOutputCount() const { return m_controlPortsOut.size(); }
72  virtual float getControlOutputValue(size_t n) const;
73 
74  virtual bool isBypassed() const { return m_bypassed; }
75  virtual void setBypassed(bool bypassed) { m_bypassed = bypassed; }
76 
77  virtual size_t getLatency();
78 
79  virtual void silence();
80  virtual void setIdealChannelCount(size_t channels); // may re-instantiate
81 
82  virtual std::string getType() const { return "LADSPA Real-Time Plugin"; }
83 
84 protected:
85  // To be constructed only by LADSPAPluginFactory
86  friend class LADSPAPluginFactory;
87 
88  // Constructor that creates the buffers internally
89  //
91  int client,
92  QString identifier,
93  int position,
94  unsigned long sampleRate,
95  size_t blockSize,
96  int idealChannelCount,
97  const LADSPA_Descriptor* descriptor);
98 
99  void init(int idealChannelCount = 0);
100  void instantiate(unsigned long sampleRate);
101  void cleanup();
102  void activate();
103  void deactivate();
104 
105  // Connection of data (and behind the scenes control) ports
106  //
107  void connectPorts();
108 
109  int m_client;
111  std::vector<LADSPA_Handle> m_instanceHandles;
113  const LADSPA_Descriptor *m_descriptor;
114 
115  std::vector<std::pair<unsigned long, LADSPA_Data*> > m_controlPortsIn;
116  std::vector<std::pair<unsigned long, LADSPA_Data*> > m_controlPortsOut;
117 
118  std::vector<int> m_audioPortsIn;
119  std::vector<int> m_audioPortsOut;
120 
121  size_t m_blockSize;
125  size_t m_sampleRate;
127  bool m_run;
128 
130 };
131 
132 #endif // _LADSPAPLUGININSTANCE_H_
133 
virtual void setParameter(std::string, float)
virtual sample_t ** getAudioOutputBuffers()
virtual float getParameterDefault(unsigned int parameter) const
virtual ParameterList getParameterDescriptors() const
std::vector< LADSPA_Handle > m_instanceHandles
virtual void setParameterValue(unsigned int parameter, float value)
virtual QString getPluginIdentifier() const
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
virtual void run(const Vamp::RealTime &rt, size_t count=0)
Run for one block, starting at the given time.
virtual size_t getBufferSize() const
virtual float getParameterValue(unsigned int parameter) const
virtual void setBypassed(bool bypassed)
virtual int getParameterDisplayHint(unsigned int parameter) const
virtual std::string getType() const
virtual void setIdealChannelCount(size_t channels)
void instantiate(unsigned long sampleRate)
virtual std::string getName() const
virtual size_t getAudioInputCount() const
virtual sample_t ** getAudioInputBuffers()
virtual size_t getControlOutputCount() 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
std::vector< int > m_audioPortsIn
virtual size_t getAudioOutputCount() const
LADSPAPluginInstance(RealTimePluginFactory *factory, int client, QString identifier, int position, unsigned long sampleRate, size_t blockSize, int idealChannelCount, const LADSPA_Descriptor *descriptor)
virtual bool isBypassed() const
virtual unsigned int getParameterCount() const
virtual float getControlOutputValue(size_t n) const
virtual std::string getCopyright() const
const LADSPA_Descriptor * m_descriptor
virtual std::string getDescription() const
virtual bool isOK() const