AudioDB Meeting, Goldsmiths Dec 2011

MC, CR, CC, LF

Current state

  • Library
    • Mainline code in trunk works OK
    • Library API is "quite good"
    • Error handling is a very weak point
  • Indexing
    • LSH should be in a separate library, but it has no clear interface yet
    • There are contortions between e.g. query.c and query-indexed.c
    • There is no introspection, e.g. no way to say "is there an index that satisfies this query?" -- only to say "satisfy this query" and fail
  • Tools
    • Currently we have a library, and a command-line binary which does not use the library API but instead uses some of the same .o files directly
    • Some functions are not properly library-ized, for example the command-line tool is the only way to create an index at the moment
    • Old fftExtract binary is still in use in some places with a new latent feature separation front-end
  • Bindings
    • Lisp, Python: Quite good
    • pd: broken-ish
    • Some additional interfaces e.g. SOAP that predate the stable API and are pretty horrible now
    • Bindings are not built automatically
  • Documentation
    • Essentially none
    • Public header has some rather cryptic stuff
  • Licence
    • Currently all GPL

Actions

  • Philosophy: Project should be a set of modules -- not so much a database, as libraries with tools that make use of them
  • Discard broken / ancient interfaces e.g. SOAP
  • Refactor API so that the (existing) "world object" concept is carried through in order to retain error condition state
  • Document API
  • Rebuild command-line utility in either C C++ or Python using the API only, and augment API if there are things it needs that don't exist there yet
  • Document command-line utility
  • (Keep bindings in same repo, don't spin them out)
  • Try to build module API for LSH so that alternative implementations could be introduced
  • Licence: LGPL for library, BSD for bindings