SampleType » History » Version 17
« Previous -
Version 17/72
(diff) -
Next » -
Current version
Chris Cannam, 2014-02-10 01:34 PM
Output Sample Type and Sample Rate¶
A Vamp plugin receives audio and produces a series of descriptive feature structures.
The audio input is provided as a series of fixed-length sample blocks, equally spaced in time, provided to successive calls to the plugin's process
function. The plugin may return any number of features from each process
call, and may also return any number of features from getRemainingFeatures
after all the audio has been received.
Features are each associated with a particular output of the plugin. The plugin declares that each output has certain properties, which constrain the sort of feature data the host can expect to see. (See diagram.)
A feature may or may not have a timestamp. Whether a timestamp is provided -- and, if it is provided, what it means -- are determined by the SampleType
and SampleRate
properties of the plugin output on which the feature is returned.
SampleType¶
A plugin output's SampleType
property may be either OneSamplePerStep
, FixedSampleRate
, or VariableSampleRate
. Here's what they mean.
OneSamplePerStep¶
This is the simplest option. If an output is declared as having a SampleType
of OneSamplePerStep
, then any features returned from a process
call are assumed to match up with the audio block provided to that process
call.
What this means¶
For any features returned through an output declared with OneSamplePerStep
type,
- The plugin should not set timestamps on these features
- If the plugin does set timestamps, the host must ignore them
- The host must treat all such features returned from a given
process
call as if they had the same timestamp as it passed to thatprocess
call - The host must treat all such features returned from
getRemainingFeatures
as if they were immediately following the finalprocess
block (i.e. with the same time as the next equally-spacedprocess
block would have had if the input had not ended).
Examples¶
OneSamplePerStep
is most often used for simple measurements and visualisations, in which some internal calculation is updated on each process call and a new result returned. For example: envelope trackers; power calculations; spectrograms. These outputs are typically visualised using line graphs or colour matrix plots.
OneSamplePerStep
is often used for intermediate results calculated during processing of a more sophisticated feature. For example, a beat tracker might have an auxiliary output with OneSamplePerStep
type returning its internal onset detection function value.