Index: swig/Makefile.am
===================================================================
--- swig/Makefile.am	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
+++ swig/Makefile.am	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
@@ -0,0 +1,26 @@
+EXTRA_DIST = aubio.i
+
+PYTHON_DIR = ../python/aubio
+SWIG = swig
+#SW_FLAGS = -c++
+# removed -Wall -Wmissing-prototypes -Wmissing-declarations 
+SW_CFLAGS = -DJACK_SUPPORT -shared -Werror -Wno-char-subscripts -Wno-unknown-pragmas
+#SW_CFLAGS = -Wno-missing-prototypes -Wno-missing-declarations
+SWINCLUDE = -I/usr/include/python2.3 -I../src -I/usr/include
+SWLDFLAGS = -L../src/.libs -laubio
+
+
+all:
+	$(SWIG) $(SW_FLAGS) -outdir $(PYTHON_DIR) -python aubio.i
+	$(CC) $(SW_CFLAGS) -c aubio_wrap.c $(SWINCLUDE)
+	$(CC) $(SW_CFLAGS) aubio_wrap.o -o $(PYTHON_DIR)/_aubiowrapper.so $(SWLDFLAGS)
+
+install:
+	$(mkinstalldirs) $(DESTDIR)$(pkgpythondir)
+	$(INSTALL) $(PYTHON_DIR)/_aubiowrapper.so $(DESTDIR)$(pkgpythondir)
+	$(INSTALL) -m644 $(PYTHON_DIR)/aubiowrapper.py $(DESTDIR)$(pkgpythondir)
+
+clean:
+	rm -f aubio_wrap.{c,o} $(PYTHON_DIR)/{_aubiowrapper.so,aubiowrapper.py,aubiowrapper.pyc}
+
+distclean: clean
Index: swig/Makefile.in
===================================================================
--- swig/Makefile.in	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
+++ swig/Makefile.in	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
@@ -0,0 +1,326 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTWLIB_CFLAGS = @FFTWLIB_CFLAGS@
+FFTWLIB_LIBS = @FFTWLIB_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JACK_CFLAGS = @JACK_CFLAGS@
+JACK_LIBS = @JACK_LIBS@
+LADCCA_CFLAGS = @LADCCA_CFLAGS@
+LADCCA_LIBS = @LADCCA_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SAMPLERATE_CFLAGS = @SAMPLERATE_CFLAGS@
+SAMPLERATE_LIBS = @SAMPLERATE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNDLIB_CFLAGS = @SNDLIB_CFLAGS@
+SNDLIB_LIBS = @SNDLIB_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = aubio.i
+
+PYTHON_DIR = ../python/aubio
+SWIG = swig
+#SW_FLAGS = -c++
+# removed -Wall -Wmissing-prototypes -Wmissing-declarations 
+SW_CFLAGS = -DJACK_SUPPORT -shared -Werror -Wno-char-subscripts -Wno-unknown-pragmas
+#SW_CFLAGS = -Wno-missing-prototypes -Wno-missing-declarations
+SWINCLUDE = -I/usr/include/python2.3 -I../src -I/usr/include
+SWLDFLAGS = -L../src/.libs -laubio
+subdir = swig
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  swig/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+
+installdirs:
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-info-am
+
+
+all:
+	$(SWIG) $(SW_FLAGS) -outdir $(PYTHON_DIR) -python aubio.i
+	$(CC) $(SW_CFLAGS) -c aubio_wrap.c $(SWINCLUDE)
+	$(CC) $(SW_CFLAGS) aubio_wrap.o -o $(PYTHON_DIR)/_aubiowrapper.so $(SWLDFLAGS)
+
+install:
+	$(mkinstalldirs) $(DESTDIR)$(pkgpythondir)
+	$(INSTALL) $(PYTHON_DIR)/_aubiowrapper.so $(DESTDIR)$(pkgpythondir)
+	$(INSTALL) -m644 $(PYTHON_DIR)/aubiowrapper.py $(DESTDIR)$(pkgpythondir)
+
+clean:
+	rm -f aubio_wrap.{c,o} $(PYTHON_DIR)/{_aubiowrapper.so,aubiowrapper.py,aubiowrapper.pyc}
+
+distclean: clean
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: swig/aubio.i
===================================================================
--- swig/aubio.i	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
+++ swig/aubio.i	(revision 96fb8ad625b1b62c2551bd98a7af1aa3f00307f6)
@@ -0,0 +1,434 @@
+%module aubiowrapper
+
+%{
+        #include "aubio.h"
+%}
+
+#include "aubio.h"
+#include "config.h"
+
+/* type aliases */
+typedef unsigned int uint_t;
+typedef int sint_t;
+typedef float smpl_t;
+
+/* fvec */
+extern fvec_t * new_fvec(uint_t length, uint_t channels);
+extern void del_fvec(fvec_t *s);
+smpl_t fvec_read_sample(fvec_t *s, uint_t channel, uint_t position);
+void fvec_write_sample(fvec_t *s, smpl_t data, uint_t channel, uint_t position);
+smpl_t * fvec_get_channel(fvec_t *s, uint_t channel);
+void fvec_put_channel(fvec_t *s, smpl_t * data, uint_t channel);
+smpl_t ** fvec_get_data(fvec_t *s);
+
+/* another way, passing -c++ option to swig */
+/*
+class fvec_t{
+public:
+    %extend {
+        fvec_t(uint_t length, uint_t channels){
+            return new_fvec(length, channels);
+        }
+        ~fvec_t() {
+            del_fvec(self);
+        }
+        smpl_t get( uint_t channel, uint_t position) {
+            return fvec_read_sample(self,channel,position);
+        }
+        void set( smpl_t data, uint_t channel, uint_t position) {
+            fvec_write_sample(self, data, channel, position); 
+        }
+        #smpl_t * fvec_get_channel(fvec_t *s, uint_t channel);
+        #void fvec_put_channel(fvec_t *s, smpl_t * data, uint_t channel);
+    }
+};
+*/
+
+/* cvec */
+extern cvec_t * new_cvec(uint_t length, uint_t channels);
+extern void del_cvec(cvec_t *s);
+
+
+/* sndfile */
+extern aubio_file_t * new_file_ro (const char * inputfile);
+extern aubio_file_t * new_file_wo(aubio_file_t * existingfile, const char * outputname);
+extern void file_info(aubio_file_t * file);
+extern int file_write(aubio_file_t * file, int frames, fvec_t * write);
+extern int file_read(aubio_file_t * file, int frames, fvec_t * read);
+extern int del_file(aubio_file_t * file);
+extern uint_t aubio_file_channels(aubio_file_t * file);
+extern uint_t aubio_file_samplerate(aubio_file_t * file);
+
+/* fft */
+extern void aubio_fft_getnorm(smpl_t * norm, fft_data_t * spectrum, uint_t size);
+extern void aubio_fft_getphas(smpl_t * phase, fft_data_t * spectrum, uint_t size);
+
+/* filter */
+extern aubio_filter_t * new_aubio_filter(uint_t samplerate, uint_t order);
+extern aubio_filter_t * new_aubio_adsgn_filter(uint_t samplerate);
+extern aubio_filter_t * new_aubio_cdsgn_filter(uint_t samplerate);
+extern void aubio_filter_do(aubio_filter_t * b, fvec_t * in);
+extern void aubio_filter_do_outplace(aubio_filter_t * b, fvec_t * in, fvec_t * out);
+extern void aubio_filter_do_filtfilt(aubio_filter_t * b, fvec_t * in, fvec_t * tmp);
+/*extern int del_aubio_filter(aubio_filter_t * b);*/
+
+/* biquad */
+extern aubio_biquad_t * new_aubio_biquad(lsmp_t b1, lsmp_t b2, lsmp_t b3, lsmp_t a2, lsmp_t a3);
+extern void aubio_biquad_do(aubio_biquad_t * b, fvec_t * in);
+extern void aubio_biquad_do_filtfilt(aubio_biquad_t * b, fvec_t * in, fvec_t * tmp);
+/*extern int del_aubio_biquad(aubio_biquad_t * b);*/
+
+/* hist */
+extern aubio_hist_t * new_aubio_hist(smpl_t flow, smpl_t fhig, uint_t nelems, uint_t channels);
+extern void del_aubio_hist(aubio_hist_t *s);
+extern void aubio_hist_do(aubio_hist_t *s, fvec_t * input);
+extern void aubio_hist_do_notnull(aubio_hist_t *s, fvec_t * input);
+extern void aubio_hist_dyn_notnull (aubio_hist_t *s, fvec_t *input);
+
+/* mathutils */
+typedef enum {
+        rectangle,
+        hamming,
+        hanning,
+        hanningz,
+        blackman,
+        blackman_harris,
+        gaussian,
+        welch,
+        parzen
+} window_type_t;
+
+void window(smpl_t *w, uint_t size, window_type_t wintype);
+smpl_t unwrap2pi (smpl_t phase);
+smpl_t vec_mean(fvec_t *s);
+smpl_t vec_max(fvec_t *s);
+smpl_t vec_min(fvec_t *s);
+uint_t vec_min_elem(fvec_t *s);
+uint_t vec_max_elem(fvec_t *s);
+void vec_shift(fvec_t *s);
+smpl_t vec_sum(fvec_t *s);
+smpl_t vec_local_energy(fvec_t * f);
+smpl_t vec_local_hfc(fvec_t * f);
+smpl_t vec_alpha_norm(fvec_t * DF, smpl_t alpha);
+void vec_dc_removal(fvec_t * mag);
+void vec_alpha_normalise(fvec_t * mag, uint_t alpha);
+void vec_add(fvec_t * mag, smpl_t threshold);
+void vec_adapt_thres(fvec_t * vec, fvec_t * tmp, uint_t post, uint_t pre);
+smpl_t vec_moving_thres(fvec_t * vec, fvec_t * tmp, uint_t post, uint_t pre, uint_t pos);
+smpl_t vec_median(fvec_t * input);
+smpl_t vec_quadint(fvec_t * x,uint_t pos);
+smpl_t quadfrac(smpl_t s0, smpl_t s1, smpl_t s2, smpl_t pf);
+uint_t vec_peakpick(fvec_t * input, uint_t pos);
+smpl_t bintomidi(smpl_t bin, smpl_t samplerate, smpl_t fftsize);
+smpl_t bintofreq(smpl_t bin, smpl_t samplerate, smpl_t fftsize);
+smpl_t freqtomidi(smpl_t freq);
+uint_t aubio_silence_detection(fvec_t * ibuf, smpl_t threshold);
+smpl_t aubio_level_detection(fvec_t * ibuf, smpl_t threshold);
+
+/* scale */
+extern aubio_scale_t * new_aubio_scale(smpl_t flow, smpl_t fhig, smpl_t ilow, smpl_t ihig	);
+extern void aubio_scale_set (aubio_scale_t *s, smpl_t ilow, smpl_t ihig, smpl_t olow, smpl_t ohig);
+extern void aubio_scale_do(aubio_scale_t *s, fvec_t * input);
+extern void del_aubio_scale(aubio_scale_t *s);
+
+/* resampling */
+extern aubio_resampler_t * new_aubio_resampler(float ratio, uint_t type);
+extern uint_t aubio_resampler_process(aubio_resampler_t *s, fvec_t * input,  fvec_t * output);
+extern void del_aubio_resampler(aubio_resampler_t *s);
+
+/* onset detection */
+typedef enum { energy, specdiff, hfc, complexdomain, phase } aubio_onsetdetection_type;
+aubio_onsetdetection_t * new_aubio_onsetdetection(aubio_onsetdetection_type type, uint_t size, uint_t channels);
+void aubio_onsetdetection(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+void aubio_onsetdetection_free(aubio_onsetdetection_t *o);
+
+/* should these still be exposed ? */
+void aubio_onsetdetection_energy  (aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+void aubio_onsetdetection_hfc 	 (aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+void aubio_onsetdetection_complex (aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+void aubio_onsetdetection_phase   (aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
+
+/* pvoc */
+aubio_pvoc_t * new_aubio_pvoc (uint_t win_s, uint_t hop_s, uint_t channels);
+void del_aubio_pvoc(aubio_pvoc_t *pv);
+void aubio_pvoc_do(aubio_pvoc_t *pv, fvec_t *in, cvec_t * fftgrain);
+void aubio_pvoc_rdo(aubio_pvoc_t *pv, cvec_t * fftgrain, fvec_t *out);
+
+/* pitch detection */
+
+/* pitch mcomb */
+aubio_pitchmcomb_t * new_aubio_pitchmcomb(uint_t size, uint_t channels);
+smpl_t aubio_pitchmcomb_detect(aubio_pitchmcomb_t * p, cvec_t * fftgrain);
+uint_t aubio_pitch_cands(aubio_pitchmcomb_t * p, cvec_t * fftgrain, smpl_t * cands);
+
+/* pitch yin */
+void aubio_pitchyin_diff(fvec_t *input, fvec_t *yin);
+void aubio_pitchyin_getcum(fvec_t *yin);
+uint_t aubio_pitchyin_getpitch(fvec_t *yin);
+
+/* peakpicker */
+aubio_pickpeak_t * new_aubio_peakpicker(smpl_t threshold);
+uint_t aubio_peakpick_pimrt(fvec_t * DF, aubio_pickpeak_t * p);
+uint_t aubio_peakpick_pimrt_wt( fvec_t* DF, aubio_pickpeak_t* p, smpl_t* peakval );
+void del_aubio_peakpicker(aubio_pickpeak_t * p);
+
+/* transient/steady state separation */
+aubio_tss_t * new_aubio_tss(smpl_t thrs, smpl_t alfa, smpl_t beta,
+    uint_t size, uint_t overlap,uint_t channels);
+void del_aubio_tss(aubio_tss_t *s);
+void aubio_tss_do(aubio_tss_t *s, cvec_t * input, cvec_t * trans, cvec_t * stead);
+
+
+/* jack */
+#ifdef JACK_SUPPORT
+extern aubio_jack_t * new_aubio_jack (uint_t inchannels, uint_t outchannels, aubio_process_func_t callback); 
+typedef int (*aubio_process_func_t)(smpl_t **input, smpl_t **output, int nframes);
+extern uint_t aubio_jack_activate(aubio_jack_t *jack_setup);
+extern void aubio_jack_close(aubio_jack_t *jack_setup);
+#endif 
+
+/* midi */
+enum aubio_midi_event_type {
+  /* channel messages */
+  NOTE_OFF = 0x80,
+  NOTE_ON = 0x90,
+  KEY_PRESSURE = 0xa0,
+  CONTROL_CHANGE = 0xb0,
+  PROGRAM_CHANGE = 0xc0,
+  CHANNEL_PRESSURE = 0xd0,
+  PITCH_BEND = 0xe0,
+  /* system exclusive */
+  MIDI_SYSEX = 0xf0,
+  /* system common - never in midi files */
+  MIDI_TIME_CODE = 0xf1,
+  MIDI_SONG_POSITION = 0xf2,
+  MIDI_SONG_SELECT = 0xf3,
+  MIDI_TUNE_REQUEST = 0xf6,
+  MIDI_EOX = 0xf7,
+  /* system real-time - never in midi files */
+  MIDI_SYNC = 0xf8,
+  MIDI_TICK = 0xf9,
+  MIDI_START = 0xfa,
+  MIDI_CONTINUE = 0xfb,
+  MIDI_STOP = 0xfc,
+  MIDI_ACTIVE_SENSING = 0xfe,
+  MIDI_SYSTEM_RESET = 0xff,
+  /* meta event - for midi files only */
+  MIDI_META_EVENT = 0xff
+};
+
+enum aubio_midi_control_change {
+  BANK_SELECT_MSB = 0x00,
+  MODULATION_MSB = 0x01,
+  BREATH_MSB = 0x02,
+  FOOT_MSB = 0x04,
+  PORTAMENTO_TIME_MSB = 0x05,
+  DATA_ENTRY_MSB = 0x06,
+  VOLUME_MSB = 0x07,
+  BALANCE_MSB = 0x08,
+  PAN_MSB = 0x0A,
+  EXPRESSION_MSB = 0x0B,
+  EFFECTS1_MSB = 0x0C,
+  EFFECTS2_MSB = 0x0D,
+  GPC1_MSB = 0x10, /* general purpose controller */
+  GPC2_MSB = 0x11,
+  GPC3_MSB = 0x12,
+  GPC4_MSB = 0x13,
+  BANK_SELECT_LSB = 0x20,
+  MODULATION_WHEEL_LSB = 0x21,
+  BREATH_LSB = 0x22,
+  FOOT_LSB = 0x24,
+  PORTAMENTO_TIME_LSB = 0x25,
+  DATA_ENTRY_LSB = 0x26,
+  VOLUME_LSB = 0x27,
+  BALANCE_LSB = 0x28,
+  PAN_LSB = 0x2A,
+  EXPRESSION_LSB = 0x2B,
+  EFFECTS1_LSB = 0x2C,
+  EFFECTS2_LSB = 0x2D,
+  GPC1_LSB = 0x30,
+  GPC2_LSB = 0x31,
+  GPC3_LSB = 0x32,
+  GPC4_LSB = 0x33,
+  SUSTAIN_SWITCH = 0x40,
+  PORTAMENTO_SWITCH = 0x41,
+  SOSTENUTO_SWITCH = 0x42,
+  SOFT_PEDAL_SWITCH = 0x43,
+  LEGATO_SWITCH = 0x45,
+  HOLD2_SWITCH = 0x45,
+  SOUND_CTRL1 = 0x46,
+  SOUND_CTRL2 = 0x47,
+  SOUND_CTRL3 = 0x48,
+  SOUND_CTRL4 = 0x49,
+  SOUND_CTRL5 = 0x4A,
+  SOUND_CTRL6 = 0x4B,
+  SOUND_CTRL7 = 0x4C,
+  SOUND_CTRL8 = 0x4D,
+  SOUND_CTRL9 = 0x4E,
+  SOUND_CTRL10 = 0x4F,
+  GPC5 = 0x50,
+  GPC6 = 0x51,
+  GPC7 = 0x52,
+  GPC8 = 0x53,
+  PORTAMENTO_CTRL = 0x54,
+  EFFECTS_DEPTH1 = 0x5B,
+  EFFECTS_DEPTH2 = 0x5C,
+  EFFECTS_DEPTH3 = 0x5D,
+  EFFECTS_DEPTH4 = 0x5E,
+  EFFECTS_DEPTH5 = 0x5F,
+  DATA_ENTRY_INCR = 0x60,
+  DATA_ENTRY_DECR = 0x61,
+  NRPN_LSB = 0x62,
+  NRPN_MSB = 0x63,
+  RPN_LSB = 0x64,
+  RPN_MSB = 0x65,
+  ALL_SOUND_OFF = 0x78,
+  ALL_CTRL_OFF = 0x79,
+  LOCAL_CONTROL = 0x7A,
+  ALL_NOTES_OFF = 0x7B,
+  OMNI_OFF = 0x7C,
+  OMNI_ON = 0x7D,
+  POLY_OFF = 0x7E,
+  POLY_ON = 0x7F
+};
+
+enum midi_meta_event {
+  MIDI_COPYRIGHT = 0x02,
+  MIDI_TRACK_NAME = 0x03,
+  MIDI_INST_NAME = 0x04,
+  MIDI_LYRIC = 0x05,
+  MIDI_MARKER = 0x06,
+  MIDI_CUE_POINT = 0x07,
+  MIDI_EOT = 0x2f,
+  MIDI_SET_TEMPO = 0x51,
+  MIDI_SMPTE_OFFSET = 0x54,
+  MIDI_TIME_SIGNATURE = 0x58,
+  MIDI_KEY_SIGNATURE = 0x59,
+  MIDI_SEQUENCER_EVENT = 0x7f
+};
+
+enum aubio_player_status 
+{
+  AUBIO_MIDI_PLAYER_READY,
+  AUBIO_MIDI_PLAYER_PLAYING,
+  AUBIO_MIDI_PLAYER_DONE
+};
+
+enum aubio_driver_status 
+{
+  AUBIO_MIDI_READY,
+  AUBIO_MIDI_LISTENING,
+  AUBIO_MIDI_DONE
+};
+
+/* midi event */
+aubio_midi_event_t* new_aubio_midi_event(void);
+int del_aubio_midi_event(aubio_midi_event_t* event);
+int aubio_midi_event_set_type(aubio_midi_event_t* evt, int type);
+int aubio_midi_event_get_type(aubio_midi_event_t* evt);
+int aubio_midi_event_set_channel(aubio_midi_event_t* evt, int chan);
+int aubio_midi_event_get_channel(aubio_midi_event_t* evt);
+int aubio_midi_event_get_key(aubio_midi_event_t* evt);
+int aubio_midi_event_set_key(aubio_midi_event_t* evt, int key);
+int aubio_midi_event_get_velocity(aubio_midi_event_t* evt);
+int aubio_midi_event_set_velocity(aubio_midi_event_t* evt, int vel);
+int aubio_midi_event_get_control(aubio_midi_event_t* evt);
+int aubio_midi_event_set_control(aubio_midi_event_t* evt, int ctrl);
+int aubio_midi_event_get_value(aubio_midi_event_t* evt);
+int aubio_midi_event_set_value(aubio_midi_event_t* evt, int val);
+int aubio_midi_event_get_program(aubio_midi_event_t* evt);
+int aubio_midi_event_set_program(aubio_midi_event_t* evt, int val);
+int aubio_midi_event_get_pitch(aubio_midi_event_t* evt);
+int aubio_midi_event_set_pitch(aubio_midi_event_t* evt, int val);
+int aubio_midi_event_length(unsigned char status);
+
+/* midi track */
+aubio_track_t* new_aubio_track(int num);
+int del_aubio_track(aubio_track_t* track);
+int aubio_track_set_name(aubio_track_t* track, char* name);
+char* aubio_track_get_name(aubio_track_t* track);
+int aubio_track_add_event(aubio_track_t* track, aubio_midi_event_t* evt);
+aubio_midi_event_t* aubio_track_first_event(aubio_track_t* track);
+aubio_midi_event_t* aubio_track_next_event(aubio_track_t* track);
+int aubio_track_get_duration(aubio_track_t* track);
+int aubio_track_reset(aubio_track_t* track);
+int aubio_track_count_events(aubio_track_t* track, int* on, int* off);
+
+/* midi player */
+aubio_midi_player_t* new_aubio_midi_player(void);
+sint_t del_aubio_midi_player(aubio_midi_player_t* player);
+sint_t aubio_midi_player_reset(aubio_midi_player_t* player);
+sint_t aubio_midi_player_add_track(aubio_midi_player_t* player, aubio_track_t* track);
+sint_t aubio_midi_player_count_tracks(aubio_midi_player_t* player);
+aubio_track_t* aubio_midi_player_get_track(aubio_midi_player_t* player, sint_t i);
+sint_t aubio_midi_player_add(aubio_midi_player_t* player, char* midifile);
+sint_t aubio_midi_player_load(aubio_midi_player_t* player, char *filename);
+sint_t aubio_midi_player_callback(void* data, uint_t msec);
+sint_t aubio_midi_player_play(aubio_midi_player_t* player);
+sint_t aubio_midi_player_play_offline(aubio_midi_player_t* player);
+sint_t aubio_midi_player_stop(aubio_midi_player_t* player);
+sint_t aubio_midi_player_set_loop(aubio_midi_player_t* player, sint_t loop);
+sint_t aubio_midi_player_set_midi_tempo(aubio_midi_player_t* player, sint_t tempo);
+sint_t aubio_midi_player_set_bpm(aubio_midi_player_t* player, sint_t bpm);
+sint_t aubio_midi_player_join(aubio_midi_player_t* player);
+sint_t aubio_track_send_events(aubio_track_t* track, 
+/*  aubio_synth_t* synth, */
+			   aubio_midi_player_t* player,
+			   uint_t ticks);
+sint_t aubio_midi_send_event(aubio_midi_player_t* player, aubio_midi_event_t* event);
+
+/* midi parser */
+aubio_midi_parser_t* new_aubio_midi_parser(void);
+int del_aubio_midi_parser(aubio_midi_parser_t* parser);
+aubio_midi_event_t* aubio_midi_parser_parse(aubio_midi_parser_t* parser, unsigned char c);
+
+/* midi file */
+aubio_midi_file_t* new_aubio_midi_file(char* filename);
+void del_aubio_midi_file(aubio_midi_file_t* mf);
+int aubio_midi_file_read_mthd(aubio_midi_file_t* midifile);
+int aubio_midi_file_load_tracks(aubio_midi_file_t* midifile, aubio_midi_player_t* player);
+int aubio_midi_file_read_track(aubio_midi_file_t* mf, aubio_midi_player_t* player, int num);
+int aubio_midi_file_read_event(aubio_midi_file_t* mf, aubio_track_t* track);
+int aubio_midi_file_read_varlen(aubio_midi_file_t* mf);
+int aubio_midi_file_getc(aubio_midi_file_t* mf);
+int aubio_midi_file_push(aubio_midi_file_t* mf, int c);
+int aubio_midi_file_read(aubio_midi_file_t* mf, void* buf, int len);
+int aubio_midi_file_skip(aubio_midi_file_t* mf, int len);
+int aubio_midi_file_read_tracklen(aubio_midi_file_t* mf);
+int aubio_midi_file_eot(aubio_midi_file_t* mf);
+int aubio_midi_file_get_division(aubio_midi_file_t* midifile);
+
+
+/* midi driver */
+aubio_midi_driver_t* new_aubio_midi_driver(char * name,
+        handle_midi_event_func_t handler, void* event_handler_data);
+typedef int* (handle_midi_event_func_t) (void* data, aubio_midi_event_t* event);
+void del_aubio_midi_driver(aubio_midi_driver_t* driver);
+void aubio_midi_driver_settings(aubio_settings_t* settings);
+
+/* timer */
+/*
+extern aubio_timer_t* new_aubio_timer(int msec, int * callback, 
+                        void* data, int new_thread, int auto_destroy);
+extern int aubio_timer_join(aubio_timer_t* timer);
+extern int aubio_timer_stop(aubio_timer_t* timer);
+extern int delete_aubio_timer(aubio_timer_t* timer);
+extern void * aubio_timer_start(void * data);
+extern void aubio_time_config(void);
+*/
+
+/* list */
+/*
+extern struct aubio_list_t* new_aubio_list(void);
+extern void del_aubio_list(struct aubio_list_t *list);
+extern void del_aubio_list1(struct aubio_list_t *list);
+#extern struct aubio_list_t* aubio_list_sort(struct aubio_list_t *list, aubio_compare_func_t compare_func);
+extern struct aubio_list_t* aubio_list_append(struct aubio_list_t *list, void* data);
+extern struct aubio_list_t* aubio_list_prepend(struct aubio_list_t *list, void* data);
+extern struct aubio_list_t* aubio_list_remove(struct aubio_list_t *list, void* data);
+extern struct aubio_list_t* aubio_list_remove_link(struct aubio_list_t *list, struct aubio_list_t *llink);
+extern struct aubio_list_t* aubio_list_nth(struct aubio_list_t *list, int n);
+extern struct aubio_list_t* aubio_list_last(struct aubio_list_t *list);
+extern struct aubio_list_t* aubio_list_insert_at(struct aubio_list_t *list, int n, void* data);
+*/
