Mercurial > hg > match-vamp
comparison MatchVampPlugin.cpp @ 18:207bbdf74ee3
Expose a number of MATCH parameters through the plugin
author | Chris Cannam |
---|---|
date | Fri, 10 Oct 2014 14:22:53 +0100 |
parents | 27f418d77095 |
children | a5e0633d5238 |
comparison
equal
deleted
inserted
replaced
17:27f418d77095 | 18:207bbdf74ee3 |
---|---|
138 MatchVampPlugin::getParameterDescriptors() const | 138 MatchVampPlugin::getParameterDescriptors() const |
139 { | 139 { |
140 ParameterList list; | 140 ParameterList list; |
141 | 141 |
142 ParameterDescriptor desc; | 142 ParameterDescriptor desc; |
143 | |
143 desc.identifier = "serialise"; | 144 desc.identifier = "serialise"; |
144 desc.name = "Serialise Plugin Invocations"; | 145 desc.name = "Serialise Plugin Invocations"; |
145 desc.description = "Reduce potential memory load at the expense of multiprocessor performance by serialising multi-threaded plugin runs"; | 146 desc.description = "Reduce potential memory load at the expense of multiprocessor performance by serialising multi-threaded plugin runs"; |
146 desc.minValue = 0; | 147 desc.minValue = 0; |
147 desc.maxValue = 1; | 148 desc.maxValue = 1; |
148 desc.defaultValue = 0; | 149 desc.defaultValue = 0; |
149 desc.isQuantized = true; | 150 desc.isQuantized = true; |
150 desc.quantizeStep = 1; | 151 desc.quantizeStep = 1; |
151 list.push_back(desc); | 152 list.push_back(desc); |
152 | 153 |
154 desc.identifier = "framenorm"; | |
155 desc.name = "Frame Normalisation"; | |
156 desc.description = "Type of normalisation to use for frequency-domain audio features"; | |
157 desc.minValue = 0; | |
158 desc.maxValue = 2; | |
159 desc.defaultValue = (int)m_defaultParams.frameNorm; | |
160 desc.isQuantized = true; | |
161 desc.quantizeStep = 1; | |
162 desc.valueNames.clear(); | |
163 desc.valueNames.push_back("None"); | |
164 desc.valueNames.push_back("Sum To 1"); | |
165 desc.valueNames.push_back("Long-Term Average"); | |
166 list.push_back(desc); | |
167 desc.valueNames.clear(); | |
168 | |
169 desc.identifier = "distnorm"; | |
170 desc.name = "Distance Normalisation"; | |
171 desc.description = "Type of normalisation to use for distance metric"; | |
172 desc.minValue = 0; | |
173 desc.maxValue = 2; | |
174 desc.defaultValue = (int)m_defaultParams.distanceNorm; | |
175 desc.isQuantized = true; | |
176 desc.quantizeStep = 1; | |
177 desc.valueNames.clear(); | |
178 desc.valueNames.push_back("None"); | |
179 desc.valueNames.push_back("Sum of Frames"); | |
180 desc.valueNames.push_back("Log Sum of Frames"); | |
181 list.push_back(desc); | |
182 desc.valueNames.clear(); | |
183 | |
184 desc.identifier = "usespecdiff"; | |
185 desc.name = "Use Spectral Difference"; | |
186 desc.description = "Whether to use half-wave rectified spectral difference instead of straight spectrum"; | |
187 desc.minValue = 0; | |
188 desc.maxValue = 1; | |
189 desc.defaultValue = m_defaultParams.useSpectralDifference ? 1 : 0; | |
190 desc.isQuantized = true; | |
191 desc.quantizeStep = 1; | |
192 list.push_back(desc); | |
193 | |
194 desc.identifier = "usechroma"; | |
195 desc.name = "Use Chroma Frequency Map"; | |
196 desc.description = "Whether to use a chroma frequency map instead of the default warped spectrogram"; | |
197 desc.minValue = 0; | |
198 desc.maxValue = 1; | |
199 desc.defaultValue = m_defaultParams.useChromaFrequencyMap ? 1 : 0; | |
200 desc.isQuantized = true; | |
201 desc.quantizeStep = 1; | |
202 list.push_back(desc); | |
203 | |
204 desc.identifier = "maxruncount"; | |
205 desc.name = "Max Run Count"; | |
206 desc.description = "Limit of number of frames that will be accepted from one source without a frame from the other source being accepted"; | |
207 desc.minValue = 1; | |
208 desc.maxValue = 10; | |
209 desc.defaultValue = m_defaultParams.maxRunCount; | |
210 desc.isQuantized = true; | |
211 desc.quantizeStep = 1; | |
212 list.push_back(desc); | |
213 | |
153 return list; | 214 return list; |
154 } | 215 } |
155 | 216 |
156 float | 217 float |
157 MatchVampPlugin::getParameter(std::string name) const | 218 MatchVampPlugin::getParameter(std::string name) const |
158 { | 219 { |
159 if (name == "serialise") { | 220 if (name == "serialise") { |
160 return m_serialise ? 1.0 : 0.0; | 221 return m_serialise ? 1.0 : 0.0; |
161 } | 222 } else if (name == "framenorm") { |
223 return (int)m_params.frameNorm; | |
224 } else if (name == "distnorm") { | |
225 return (int)m_params.distanceNorm; | |
226 } else if (name == "usespecdiff") { | |
227 return m_params.useSpectralDifference ? 1.0 : 0.0; | |
228 } else if (name == "usechroma") { | |
229 return m_params.useChromaFrequencyMap ? 1.0 : 0.0; | |
230 } else if (name == "maxruncount") { | |
231 return m_params.maxRunCount; | |
232 } | |
233 | |
162 return 0.0; | 234 return 0.0; |
163 } | 235 } |
164 | 236 |
165 void | 237 void |
166 MatchVampPlugin::setParameter(std::string name, float value) | 238 MatchVampPlugin::setParameter(std::string name, float value) |
167 { | 239 { |
168 if (name == "serialise") { | 240 if (name == "serialise") { |
169 m_serialise = (value > 0.5); | 241 m_serialise = (value > 0.5); |
170 // std::cerr << "MatchVampPlugin::setParameter: set serialise to " << m_serialise << std::endl; | 242 } else if (name == "framenorm") { |
243 m_params.frameNorm = (Matcher::FrameNormalisation)(int(value + 0.1)); | |
244 } else if (name == "distnorm") { | |
245 m_params.distanceNorm = (Matcher::DistanceNormalisation)(int(value + 0.1)); | |
246 } else if (name == "usespecdiff") { | |
247 m_params.useSpectralDifference = (value > 0.5); | |
248 } else if (name == "usechroma") { | |
249 m_params.useChromaFrequencyMap = (value > 0.5); | |
250 } else if (name == "maxruncount") { | |
251 m_params.maxRunCount = int(value + 0.1); | |
171 } | 252 } |
172 } | 253 } |
173 | 254 |
174 size_t | 255 size_t |
175 MatchVampPlugin::getPreferredStepSize() const | 256 MatchVampPlugin::getPreferredStepSize() const |