annotate vestigial-manual/bullets.html @ 119:e9b5fb4a6ea3

...
author cannam
date Sun, 24 Feb 2008 17:20:30 +0000
parents d5d7bbb2faf9
children
rev   line source
cannam@118 1 <html xmlns:tomboy="http://beatniksoftware.com/tomboy" xmlns:link="http://beatniksoftware.com/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size"><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Salient points of Vamp document</title><style type="text/css">
cannam@118 2
cannam@118 3 body { }
cannam@118 4 h1 { font-size: xx-large;
cannam@118 5 font-weight: bold;
cannam@118 6 border-bottom: 1px solid black; }
cannam@118 7 div.note { overflow: auto;
cannam@118 8 position: relative;
cannam@118 9 display: block;
cannam@118 10 padding: 5pt;
cannam@118 11 margin: 5pt;
cannam@118 12 white-space: -moz-pre-wrap; /* Mozilla */
cannam@118 13 white-space: -pre-wrap; /* Opera 4 - 6 */
cannam@118 14 white-space: -o-pre-wrap; /* Opera 7 */
cannam@118 15 white-space: pre-wrap; /* CSS3 */
cannam@118 16 word-wrap: break-word; /* IE 5.5+ */ }
cannam@118 17 </style></head><body><div class="note" id="Salient points of Vamp document" style="width:293;"><a name="#Salient points of Vamp document"></a><h1>Salient points of Vamp document</h1>
cannam@118 18 <ul><li dir="ltr">Vamp plugin is compiled code delivered in shared library file
cannam@118 19 </li><li dir="ltr">in C or C++
cannam@118 20 </li><li dir="ltr">Needs to be recompiled for each platform
cannam@118 21 </li><li dir="ltr">Requires a host to be of any use
cannam@118 22 </li><li dir="ltr">advantages over e.g. matlab: applicable to any host, can be faster, doesn't require supporting framework from commercial application
cannam@118 23 </li><li dir="ltr">Vamp not an acronym
cannam@118 24 </li><li dir="ltr">Examples: note onset detector, chromagram, amplitude tracker
cannam@118 25 </li><li dir="ltr">Plugins don't display, just compute
cannam@118 26 </li><li dir="ltr">Things a plugin always has: - basic descriptive data [ identifier, name, description, maker ] - processing prefs [ input domain, step block size, channels ] - output descriptors
cannam@118 27 </li><li dir="ltr">may have - parameter descriptors, programs
cannam@118 28 </li><li dir="ltr">Vamp plugin inherits Vamp::Plugin which inherits Vamp::PluginBase
cannam@118 29 </li><li dir="ltr">category not specified by the plugin, but through external metadata files (in a trivial text format)
cannam@118 30 </li><li dir="ltr">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 31 </li><li dir="ltr">Input to process() is quite different depending on whether plugin requests time domain or frequency domain input
cannam@118 32 </li><li dir="ltr">Plugin can have more than one named output; it calculates features for all of them at once
cannam@118 33 </li><li dir="ltr">Each call to process() returns zero or more features for each output
cannam@118 34 </li><li dir="ltr">Each feature has a time, and zero or more values
cannam@118 35 </li><li dir="ltr">Any "meaning" of the values (ranges, units etc) is defined by the Output Descriptor associated with the output on which the feature is returned -&gt; potential for more semantics to be added via RDF later
cannam@118 36 </li><li dir="ltr">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</li></ul>
cannam@118 37
cannam@118 38
cannam@118 39
cannam@118 40
cannam@118 41
cannam@118 42 Omissions and future work
cannam@118 43
cannam@118 44 <ul><li dir="ltr">Features do not have duration
cannam@118 45 </li><li dir="ltr">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 (??)</li></ul>
cannam@118 46
cannam@118 47
cannam@118 48 Notes about Vamp itself
cannam@118 49
cannam@119 50 <ul><li dir="ltr">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 51 </li><li dir="ltr">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. -&gt; classic data representation problem
cannam@119 52 </li><li dir="ltr">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 53 </li><li style="list-style-type: none" dir="ltr"></li></ul></div></body></html>