RealTimePluginFactory.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  This file copyright 2006 Chris Cannam.
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 as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 /*
17  This is a modified version of a source file from the
18  Rosegarden MIDI and audio sequencer and notation editor.
19  This file copyright 2000-2006 Chris Cannam.
20 */
21 
22 #ifndef SV_REALTIME_PLUGIN_FACTORY_H
23 #define SV_REALTIME_PLUGIN_FACTORY_H
24 
25 #include <QString>
26 #include <vector>
27 #include <memory>
28 
29 #include "base/Debug.h"
30 #include "base/BaseTypes.h"
31 
33 
35 {
36 public:
37  std::string name;
38  std::string label;
39  std::string maker;
40  std::string copyright;
41  std::string category;
42  bool isSynth;
43  unsigned int parameterCount;
44  unsigned int audioInputPortCount;
45  unsigned int audioOutputPortCount;
46  unsigned int controlOutputPortCount;
47  std::vector<std::string> controlOutputPortNames;
48 };
49 
51 {
52 public:
53  virtual ~RealTimePluginFactory();
54 
55  static RealTimePluginFactory *instance(QString pluginType);
56  static RealTimePluginFactory *instanceFor(QString identifier);
57  static std::vector<QString> getAllPluginIdentifiers();
58  static void enumerateAllPlugins(std::vector<QString> &);
59 
60  static void setSampleRate(sv_samplerate_t sampleRate) { m_sampleRate = sampleRate; }
61 
66  virtual void discoverPlugins() = 0;
67 
72  virtual const std::vector<QString> &getPluginIdentifiers() const = 0;
73 
79  virtual void enumeratePlugins(std::vector<QString> &list) = 0;
80 
84  virtual RealTimePluginDescriptor getPluginDescriptor(QString identifier) const = 0;
85 
89  virtual std::shared_ptr<RealTimePluginInstance> instantiatePlugin(QString identifier,
90  int clientId,
91  int position,
92  sv_samplerate_t sampleRate,
93  int blockSize,
94  int channels) = 0;
95 
99  virtual QString getPluginCategory(QString identifier) = 0;
100 
107  virtual QString getPluginLibraryPath(QString identifier) = 0;
108 
109 protected:
111 
113 };
114 
115 #endif
double sv_samplerate_t
Sample rate.
Definition: BaseTypes.h:51
std::vector< std::string > controlOutputPortNames
static sv_samplerate_t m_sampleRate
static void setSampleRate(sv_samplerate_t sampleRate)