Chris@0
|
1
|
Chris@0
|
2 #include "Azi.h"
|
Chris@0
|
3
|
Chris@0
|
4
|
Chris@0
|
5 Azi::Azi(float inputSampleRate) :
|
Chris@0
|
6 Plugin(inputSampleRate)
|
Chris@0
|
7 // Also be sure to set your plugin parameters (presumably stored
|
Chris@0
|
8 // in member variables) to their default values here -- the host
|
Chris@0
|
9 // will not do that for you
|
Chris@0
|
10 {
|
Chris@0
|
11 }
|
Chris@0
|
12
|
Chris@0
|
13 Azi::~Azi()
|
Chris@0
|
14 {
|
Chris@0
|
15 }
|
Chris@0
|
16
|
Chris@0
|
17 string
|
Chris@0
|
18 Azi::getIdentifier() const
|
Chris@0
|
19 {
|
Chris@0
|
20 return "azi";
|
Chris@0
|
21 }
|
Chris@0
|
22
|
Chris@0
|
23 string
|
Chris@0
|
24 Azi::getName() const
|
Chris@0
|
25 {
|
Chris@0
|
26 return "Stereo Plan";
|
Chris@0
|
27 }
|
Chris@0
|
28
|
Chris@0
|
29 string
|
Chris@0
|
30 Azi::getDescription() const
|
Chris@0
|
31 {
|
Chris@0
|
32 // Return something helpful here!
|
Chris@0
|
33 return "";
|
Chris@0
|
34 }
|
Chris@0
|
35
|
Chris@0
|
36 string
|
Chris@0
|
37 Azi::getMaker() const
|
Chris@0
|
38 {
|
Chris@0
|
39 // Your name here
|
Chris@0
|
40 return "";
|
Chris@0
|
41 }
|
Chris@0
|
42
|
Chris@0
|
43 int
|
Chris@0
|
44 Azi::getPluginVersion() const
|
Chris@0
|
45 {
|
Chris@0
|
46 // Increment this each time you release a version that behaves
|
Chris@0
|
47 // differently from the previous one
|
Chris@0
|
48 return 1;
|
Chris@0
|
49 }
|
Chris@0
|
50
|
Chris@0
|
51 string
|
Chris@0
|
52 Azi::getCopyright() const
|
Chris@0
|
53 {
|
Chris@0
|
54 // This function is not ideally named. It does not necessarily
|
Chris@0
|
55 // need to say who made the plugin -- getMaker does that -- but it
|
Chris@0
|
56 // should indicate the terms under which it is distributed. For
|
Chris@0
|
57 // example, "Copyright (year). All Rights Reserved", or "GPL"
|
Chris@0
|
58 return "";
|
Chris@0
|
59 }
|
Chris@0
|
60
|
Chris@0
|
61 Azi::InputDomain
|
Chris@0
|
62 Azi::getInputDomain() const
|
Chris@0
|
63 {
|
Chris@0
|
64 return TimeDomain;
|
Chris@0
|
65 }
|
Chris@0
|
66
|
Chris@0
|
67 size_t
|
Chris@0
|
68 Azi::getPreferredBlockSize() const
|
Chris@0
|
69 {
|
Chris@0
|
70 return 0; // 0 means "I can handle any block size"
|
Chris@0
|
71 }
|
Chris@0
|
72
|
Chris@0
|
73 size_t
|
Chris@0
|
74 Azi::getPreferredStepSize() const
|
Chris@0
|
75 {
|
Chris@0
|
76 return 0; // 0 means "anything sensible"; in practice this
|
Chris@0
|
77 // means the same as the block size for TimeDomain
|
Chris@0
|
78 // plugins, or half of it for FrequencyDomain plugins
|
Chris@0
|
79 }
|
Chris@0
|
80
|
Chris@0
|
81 size_t
|
Chris@0
|
82 Azi::getMinChannelCount() const
|
Chris@0
|
83 {
|
Chris@0
|
84 return 1;
|
Chris@0
|
85 }
|
Chris@0
|
86
|
Chris@0
|
87 size_t
|
Chris@0
|
88 Azi::getMaxChannelCount() const
|
Chris@0
|
89 {
|
Chris@0
|
90 return 1;
|
Chris@0
|
91 }
|
Chris@0
|
92
|
Chris@0
|
93 Azi::ParameterList
|
Chris@0
|
94 Azi::getParameterDescriptors() const
|
Chris@0
|
95 {
|
Chris@0
|
96 ParameterList list;
|
Chris@0
|
97
|
Chris@0
|
98 // If the plugin has no adjustable parameters, return an empty
|
Chris@0
|
99 // list here (and there's no need to provide implementations of
|
Chris@0
|
100 // getParameter and setParameter in that case either).
|
Chris@0
|
101
|
Chris@0
|
102 // Note that it is your responsibility to make sure the parameters
|
Chris@0
|
103 // start off having their default values (e.g. in the constructor
|
Chris@0
|
104 // above). The host needs to know the default value so it can do
|
Chris@0
|
105 // things like provide a "reset to default" function, but it will
|
Chris@0
|
106 // not explicitly set your parameters to their defaults for you if
|
Chris@0
|
107 // they have not changed in the mean time.
|
Chris@0
|
108
|
Chris@0
|
109 ParameterDescriptor d;
|
Chris@0
|
110 d.identifier = "parameter";
|
Chris@0
|
111 d.name = "Some Parameter";
|
Chris@0
|
112 d.description = "";
|
Chris@0
|
113 d.unit = "";
|
Chris@0
|
114 d.minValue = 0;
|
Chris@0
|
115 d.maxValue = 10;
|
Chris@0
|
116 d.defaultValue = 5;
|
Chris@0
|
117 d.isQuantized = false;
|
Chris@0
|
118 list.push_back(d);
|
Chris@0
|
119
|
Chris@0
|
120 return list;
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 float
|
Chris@0
|
124 Azi::getParameter(string identifier) const
|
Chris@0
|
125 {
|
Chris@0
|
126 if (identifier == "parameter") {
|
Chris@0
|
127 return 5; // return the ACTUAL current value of your parameter here!
|
Chris@0
|
128 }
|
Chris@0
|
129 return 0;
|
Chris@0
|
130 }
|
Chris@0
|
131
|
Chris@0
|
132 void
|
Chris@0
|
133 Azi::setParameter(string identifier, float value)
|
Chris@0
|
134 {
|
Chris@0
|
135 if (identifier == "parameter") {
|
Chris@0
|
136 // set the actual value of your parameter
|
Chris@0
|
137 }
|
Chris@0
|
138 }
|
Chris@0
|
139
|
Chris@0
|
140 Azi::ProgramList
|
Chris@0
|
141 Azi::getPrograms() const
|
Chris@0
|
142 {
|
Chris@0
|
143 ProgramList list;
|
Chris@0
|
144
|
Chris@0
|
145 // If you have no programs, return an empty list (or simply don't
|
Chris@0
|
146 // implement this function or getCurrentProgram/selectProgram)
|
Chris@0
|
147
|
Chris@0
|
148 return list;
|
Chris@0
|
149 }
|
Chris@0
|
150
|
Chris@0
|
151 string
|
Chris@0
|
152 Azi::getCurrentProgram() const
|
Chris@0
|
153 {
|
Chris@0
|
154 return ""; // no programs
|
Chris@0
|
155 }
|
Chris@0
|
156
|
Chris@0
|
157 void
|
Chris@0
|
158 Azi::selectProgram(string name)
|
Chris@0
|
159 {
|
Chris@0
|
160 }
|
Chris@0
|
161
|
Chris@0
|
162 Azi::OutputList
|
Chris@0
|
163 Azi::getOutputDescriptors() const
|
Chris@0
|
164 {
|
Chris@0
|
165 OutputList list;
|
Chris@0
|
166
|
Chris@0
|
167 // See OutputDescriptor documentation for the possibilities here.
|
Chris@0
|
168 // Every plugin must have at least one output.
|
Chris@0
|
169
|
Chris@0
|
170 OutputDescriptor d;
|
Chris@0
|
171 d.identifier = "output";
|
Chris@0
|
172 d.name = "My Output";
|
Chris@0
|
173 d.description = "";
|
Chris@0
|
174 d.unit = "";
|
Chris@0
|
175 d.hasFixedBinCount = true;
|
Chris@0
|
176 d.binCount = 1;
|
Chris@0
|
177 d.hasKnownExtents = false;
|
Chris@0
|
178 d.isQuantized = false;
|
Chris@0
|
179 d.sampleType = OutputDescriptor::OneSamplePerStep;
|
Chris@0
|
180 d.hasDuration = false;
|
Chris@0
|
181 list.push_back(d);
|
Chris@0
|
182
|
Chris@0
|
183 return list;
|
Chris@0
|
184 }
|
Chris@0
|
185
|
Chris@0
|
186 bool
|
Chris@0
|
187 Azi::initialise(size_t channels, size_t stepSize, size_t blockSize)
|
Chris@0
|
188 {
|
Chris@0
|
189 if (channels < getMinChannelCount() ||
|
Chris@0
|
190 channels > getMaxChannelCount()) return false;
|
Chris@0
|
191
|
Chris@0
|
192 // Real initialisation work goes here!
|
Chris@0
|
193
|
Chris@0
|
194 return true;
|
Chris@0
|
195 }
|
Chris@0
|
196
|
Chris@0
|
197 void
|
Chris@0
|
198 Azi::reset()
|
Chris@0
|
199 {
|
Chris@0
|
200 // Clear buffers, reset stored values, etc
|
Chris@0
|
201 }
|
Chris@0
|
202
|
Chris@0
|
203 Azi::FeatureSet
|
Chris@0
|
204 Azi::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
|
Chris@0
|
205 {
|
Chris@0
|
206 // Do actual work!
|
Chris@0
|
207 return FeatureSet();
|
Chris@0
|
208 }
|
Chris@0
|
209
|
Chris@0
|
210 Azi::FeatureSet
|
Chris@0
|
211 Azi::getRemainingFeatures()
|
Chris@0
|
212 {
|
Chris@0
|
213 return FeatureSet();
|
Chris@0
|
214 }
|
Chris@0
|
215
|