Mercurial > hg > vamp-onsetsds-plugin
comparison onsetsdsplugin.cpp @ 1:3d1928670329
* Commit Dan's patch for threshold parameter
author | cannam |
---|---|
date | Fri, 20 Jun 2008 13:42:15 +0000 |
parents | 635e8745ccc9 |
children | deae47ee00e7 |
comparison
equal
deleted
inserted
replaced
0:635e8745ccc9 | 1:3d1928670329 |
---|---|
33 OnsetsDSPlugin::OnsetsDSPlugin(float inputSampleRate) : | 33 OnsetsDSPlugin::OnsetsDSPlugin(float inputSampleRate) : |
34 Vamp::Plugin(inputSampleRate), | 34 Vamp::Plugin(inputSampleRate), |
35 m_ods(0), | 35 m_ods(0), |
36 m_odsdata(0), | 36 m_odsdata(0), |
37 m_dfType(ODS_ODF_RCOMPLEX), | 37 m_dfType(ODS_ODF_RCOMPLEX), |
38 m_threshold(0.5), | |
38 m_medspan(11), | 39 m_medspan(11), |
39 m_stepSize(512), | 40 m_stepSize(256), |
40 m_fftSize(1024) | 41 m_fftSize(512) |
41 { | 42 { |
42 } | 43 } |
43 | 44 |
44 OnsetsDSPlugin::~OnsetsDSPlugin() | 45 OnsetsDSPlugin::~OnsetsDSPlugin() |
45 { | 46 { |
104 desc.valueNames.push_back("Phase deviation"); | 105 desc.valueNames.push_back("Phase deviation"); |
105 desc.valueNames.push_back("Weighted phase deviation"); | 106 desc.valueNames.push_back("Weighted phase deviation"); |
106 desc.valueNames.push_back("Modified Kullback-Liebler deviation"); | 107 desc.valueNames.push_back("Modified Kullback-Liebler deviation"); |
107 list.push_back(desc); | 108 list.push_back(desc); |
108 | 109 |
110 desc.identifier = "threshold"; | |
111 desc.name = "Detection threshold"; | |
112 desc.description = "Onsets trigger when the function beats this value"; | |
113 desc.minValue = 0; | |
114 desc.maxValue = 1; | |
115 desc.defaultValue = 0.5; | |
116 desc.isQuantized = false; | |
117 desc.valueNames.clear(); | |
118 list.push_back(desc); | |
119 | |
109 desc.identifier = "medspan"; | 120 desc.identifier = "medspan"; |
110 desc.name = "Median frame span"; | 121 desc.name = "Median frame span"; |
111 desc.description = "Number of past frames used in median calculation"; | 122 desc.description = "Number of past frames used in median calculation"; |
112 desc.minValue = 5; | 123 desc.minValue = 5; |
113 desc.maxValue = 21; | 124 desc.maxValue = 21; |
131 case ODS_ODF_RCOMPLEX: return 3; | 142 case ODS_ODF_RCOMPLEX: return 3; |
132 case ODS_ODF_PHASE: return 4; | 143 case ODS_ODF_PHASE: return 4; |
133 case ODS_ODF_WPHASE: return 5; | 144 case ODS_ODF_WPHASE: return 5; |
134 case ODS_ODF_MKL: return 6; | 145 case ODS_ODF_MKL: return 6; |
135 } | 146 } |
147 } else if (name == "threshold") { | |
148 return m_threshold; | |
136 } else if (name == "medspan") { | 149 } else if (name == "medspan") { |
137 return m_medspan; | 150 return m_medspan; |
138 } | 151 } |
139 return 0.0; | 152 return 0.0; |
140 } | 153 } |
153 case 5: dfType = ODS_ODF_WPHASE; break; | 166 case 5: dfType = ODS_ODF_WPHASE; break; |
154 case 6: dfType = ODS_ODF_MKL; break; | 167 case 6: dfType = ODS_ODF_MKL; break; |
155 } | 168 } |
156 if (dfType == m_dfType) return; | 169 if (dfType == m_dfType) return; |
157 m_dfType = dfType; | 170 m_dfType = dfType; |
171 } else if (name == "threshold") { | |
172 m_threshold = value; | |
158 } else if (name == "medspan") { | 173 } else if (name == "medspan") { |
159 m_medspan = lrintf(value); | 174 m_medspan = lrintf(value); |
160 } | 175 } |
161 } | 176 } |
162 | 177 |
189 m_odsdata = new float[onsetsds_memneeded(m_dfType, m_fftSize, m_medspan)]; | 204 m_odsdata = new float[onsetsds_memneeded(m_dfType, m_fftSize, m_medspan)]; |
190 m_ods = new OnsetsDS; | 205 m_ods = new OnsetsDS; |
191 memset(m_ods, 0, sizeof(OnsetsDS)); | 206 memset(m_ods, 0, sizeof(OnsetsDS)); |
192 onsetsds_init(m_ods, m_odsdata, ODS_FFT_FFTW3_R2C, m_dfType, m_fftSize, | 207 onsetsds_init(m_ods, m_odsdata, ODS_FFT_FFTW3_R2C, m_dfType, m_fftSize, |
193 m_medspan, m_inputSampleRate); | 208 m_medspan, m_inputSampleRate); |
194 | 209 m_ods->thresh = m_threshold; |
210 | |
195 return true; | 211 return true; |
196 } | 212 } |
197 | 213 |
198 void | 214 void |
199 OnsetsDSPlugin::reset() | 215 OnsetsDSPlugin::reset() |
207 } | 223 } |
208 | 224 |
209 size_t | 225 size_t |
210 OnsetsDSPlugin::getPreferredStepSize() const | 226 OnsetsDSPlugin::getPreferredStepSize() const |
211 { | 227 { |
212 return 512; | 228 return 256; |
213 } | 229 } |
214 | 230 |
215 size_t | 231 size_t |
216 OnsetsDSPlugin::getPreferredBlockSize() const | 232 OnsetsDSPlugin::getPreferredBlockSize() const |
217 { | 233 { |
218 return 1024; | 234 return 512; |
219 } | 235 } |
220 | 236 |
221 OnsetsDSPlugin::OutputList | 237 OnsetsDSPlugin::OutputList |
222 OnsetsDSPlugin::getOutputDescriptors() const | 238 OnsetsDSPlugin::getOutputDescriptors() const |
223 { | 239 { |