Salient points of Vamp document
cannam@118:
- Vamp plugin is compiled code delivered in shared library file
cannam@118:
- in C or C++
cannam@118:
- Needs to be recompiled for each platform
cannam@118:
- Requires a host to be of any use
cannam@118:
- advantages over e.g. matlab: applicable to any host, can be faster, doesn't require supporting framework from commercial application
cannam@118:
- Vamp not an acronym
cannam@118:
- Examples: note onset detector, chromagram, amplitude tracker
cannam@118:
- Plugins don't display, just compute
cannam@118:
- Things a plugin always has: - basic descriptive data [ identifier, name, description, maker ] - processing prefs [ input domain, step block size, channels ] - output descriptors
cannam@118:
- may have - parameter descriptors, programs
cannam@118:
- Vamp plugin inherits Vamp::Plugin which inherits Vamp::PluginBase
cannam@118:
- category not specified by the plugin, but through external metadata files (in a trivial text format)
cannam@118:
- Plugin receives non-interleaves audio data as input to process(), returns structured set of feature data representing all features that have been calculated from that audio input
cannam@118:
- Input to process() is quite different depending on whether plugin requests time domain or frequency domain input
cannam@118:
- Plugin can have more than one named output; it calculates features for all of them at once
cannam@118:
- Each call to process() returns zero or more features for each output
cannam@118:
- Each feature has a time, and zero or more values
cannam@118:
- Any "meaning" of the values (ranges, units etc) is defined by the Output Descriptor associated with the output on which the feature is returned -> potential for more semantics to be added via RDF later
cannam@118:
- Time of a feature is either explicit (timestamped in feature) or implicit (based on "time of the process call"), and this depends on the output's sample type
cannam@118:
cannam@118:
cannam@118:
cannam@118:
cannam@118:
cannam@118: Omissions and future work
cannam@118:
cannam@118:
- Features do not have duration
cannam@118:
- Features can only have a single unit for all bins in the feature. So feature is an "array of values" rather than a point in a multi-dimensional space (??)
cannam@118:
cannam@118:
cannam@118: Notes about Vamp itself
cannam@118:
cannam@119:
- It's not a sophisticated invention. It's just complicated by the fact that in theory the plugin should be able to return *anything*
cannam@118:
- There is a need to compromise between having one arbitrarily complex return structure with no "meaning", and a set of specific return structures with precisely defined meaning but no way to return anything else. -> classic data representation problem
cannam@119:
- A lot about the plugin design is based on existing real-time effects plugin APIs which audio programmers may be familiar with -- rather than on plugins for existing analysis systems or the like
cannam@118: