48 Plugin(inputSampleRate),
67 return "percussiononsets";
73 return "Simple Percussion Onset Detector";
79 return "Detect percussive note onsets by identifying broadband energy rises";
85 return "Vamp SDK Example Plugins";
97 return "Code copyright 2006 Queen Mary, University of London, after Dan Barry et al 2005. Freely redistributable (BSD license)";
151 d.
name =
"Energy rise threshold";
152 d.
description =
"Energy rise within a frequency bin necessary to count toward broadband total";
161 d.
name =
"Sensitivity";
162 d.
description =
"Sensitivity of peak detector applied to broadband detection function";
184 if (
id ==
"threshold") {
185 if (value < 0) value = 0;
186 if (value > 20) value = 20;
188 }
else if (
id ==
"sensitivity") {
189 if (value < 0) value = 0;
190 if (value > 100) value = 100;
214 d.
name =
"Detection Function";
215 d.
description =
"Broadband energy rise detection function";
230 cerr <<
"ERROR: PercussionOnsetDetector::process: " 231 <<
"PercussionOnsetDetector has not been initialised" 240 float real = inputBuffers[0][i*2];
241 float imag = inputBuffers[0][i*2 + 1];
243 float sqrmag = real * real + imag * imag;
260 detectionFunction.
values.push_back(count);
261 returnFeatures[1].push_back(detectionFunction);
273 returnFeatures[0].push_back(onset);
279 return returnFeatures;
std::vector< OutputDescriptor > OutputList
Chris@6:
FeatureSet getRemainingFeatures()
After all blocks have been processed, calculate and return any remaining features derived from the co...
Chris@6:
Chris@6:
size_t getPreferredBlockSize() const
Get the preferred block size (window size – the number of sample frames passed in each block to the ...
Chris@6:
Chris@6:
float sampleRate
Sample rate of the output results, as samples per second.
Chris@6:
bool hasFixedBinCount
True if the output has the same number of values per sample for every output sample.
Chris@6:
std::vector< float > values
Results for a single sample of this feature.
Chris@6:
std::string getDescription() const
Get a human-readable description for the plugin, typically a line of text that may optionally be disp...
Chris@6:
std::map< int, FeatureList > FeatureSet
Chris@6:
float quantizeStep
Quantization resolution of the output values (e.g.
Chris@6:
bool initialise(size_t channels, size_t stepSize, size_t blockSize)
Initialise a plugin to prepare it for use with the given number of input channels, step size (window increment, in sample frames) and block size (window size, in sample frames).
Chris@6:
RealTime timestamp
Timestamp of the output feature.
Chris@6:
std::string identifier
The name of the parameter, in computer-usable form.
Chris@6:
std::string description
A human-readable short text describing the output.
Chris@6:
std::string identifier
The name of the output, in computer-usable form.
Chris@6:
OutputList getOutputDescriptors() const
Get the outputs of this plugin.
Chris@6:
std::string name
The human-readable name of the parameter.
Chris@6:
ParameterList getParameterDescriptors() const
Get the controllable parameters of this plugin.
Chris@6:
size_t getPreferredStepSize() const
Get the preferred step size (window increment – the distance in sample frames between the start fram...
Chris@6:
Chris@6:
Chris@6:
Chris@6:
Chris@6:
float minValue
The minimum value of the parameter.
Chris@6:
float getParameter(std::string id) const
Get the value of a named parameter.
Chris@6:
std::string unit
The unit of the parameter, in human-readable form.
Chris@6:
std::string unit
The unit of the output, in human-readable form.
Chris@6:
std::string getName() const
Get a human-readable name or title of the plugin.
Chris@6:
virtual size_t getMinChannelCount() const
Get the minimum supported number of input channels.
Chris@6:
std::string name
The human-readable name of the output.
Chris@6:
virtual size_t getMaxChannelCount() const
Get the maximum supported number of input channels.
Chris@6:
RealTime represents time values to nanosecond precision with accurate arithmetic and frame-rate conve...
Chris@6:
bool hasTimestamp
True if an output feature has its own timestamp.
Chris@6:
std::string description
A human-readable short text describing the parameter.
Chris@6:
Chris@6:
float maxValue
The maximum value of the parameter.
Chris@6:
std::string getCopyright() const
Get the copyright statement or licensing summary for the plugin.
Chris@6:
Chris@6:
static RealTime frame2RealTime(long frame, unsigned int sampleRate)
Convert a sample frame at the given sample rate into a RealTime.
Chris@6:
Chris@6:
void reset()
Reset the plugin after use, to prepare it for another clean run.
Chris@6:
void setParameter(std::string id, float value)
Set a named parameter.
Chris@6:
Results from each process() align with that call's block start.
Chris@6:
size_t binCount
The number of values per result of the output.
Chris@6:
PercussionOnsetDetector(float inputSampleRate)
Chris@6:
bool isQuantized
True if the output values are quantized to a particular resolution.
Chris@6:
int getPluginVersion() const
Get the version number of the plugin.
Chris@6:
float defaultValue
The default value of the parameter.
Chris@6:
std::string getMaker() const
Get the name of the author or vendor of the plugin in human-readable form.
Chris@6:
FeatureSet process(const float *const *inputBuffers, Vamp::RealTime timestamp)
Process a single block of input data.
Chris@6:
Chris@6:
bool isQuantized
True if the parameter values are quantized to a particular resolution.
Chris@6:
std::string getIdentifier() const
Get the computer-usable name of the plugin.
Chris@6:
Chris@6:
SampleType sampleType
Positioning in time of the output results.
Chris@6:
virtual ~PercussionOnsetDetector()
Chris@6:
Results are unevenly spaced and have individual timestamps.
Chris@6:
bool hasKnownExtents
True if the results in each output bin fall within a fixed numeric range (minimum and maximum values)...
Chris@6:
std::vector< ParameterDescriptor > ParameterList
Chris@6:
float * m_priorMagnitudes
Chris@6: