SampleType » History » Version 25

« Previous - Version 25/72 (diff) - Next » - Current version
Chris Cannam, 2014-02-10 02:22 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 (as well as, optionally, a duration). Whether a timestamp is needed -- and, if it is provided, what it means -- are determined by the sampleType and sampleRate properties of the 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.

The sampleRate and hasDuration output properties are ignored for outputs of this type.

What this means

For any features returned through an output declared with OneSamplePerStep type,

  • The plugin should not set timestamps on these features and should set their hasTimestamp property to false;
  • The plugin should not set durations on these features and should set their hasDuration property to false;
  • If the plugin does set either timestamps or durations, 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 that process call;
  • The host must treat all such features returned from getRemainingFeatures as if they were immediately following the final process block (i.e. with the same time as the next equally-spaced process block would have had if the input had not ended);
  • The host must treat all such features has having duration equal to the spacing between process blocks.

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.

VariableSampleRate

If the OneSamplePerStep output type essentially means that the plugin leaves all time calculations up to the host, VariableSampleRate is the opposite.

If an output is declared as having a SampleType of VariableSampleRate, the features returned through it will have timestamps set by the plugin, and they won't necessarily have any relationship to the process block timestamps provided by the host.

What this means

Timestamps

For any features returned through an output declared with VariableSampleRate type,

  • The plugin must set timestamps on these features and must set their hasTimestamp property to true;
  • The host must use the timestamps of such features as indicating their start times, independent of process block timing;
Durations
  • The plugin may set the hasDuration property of such features to true and, if it does so, must set durations to these features;
  • If, and only if, the output's hasDuration property and the feature's hasDuration property are both true, then the host must also use the durations that have been set on these features

Examples

FixedSampleRate

If an output is declared as having a SampleType of FixedSampleRate

What this means

Examples

feature-structures-20pc.png 25.3 KB, downloaded 1881 times Chris Cannam, 2014-02-10 12:04 PM