diff libs/aubioFullOSXUni/include/aubio/phasevoc.h @ 0:bcb0d40158f4

started audio file loader project - using oF_061
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 30 Aug 2011 20:18:34 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libs/aubioFullOSXUni/include/aubio/phasevoc.h	Tue Aug 30 20:18:34 2011 +0100
@@ -0,0 +1,106 @@
+/*
+   Copyright (C) 2003 Paul Brossier
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+/** \file
+
+  Phase vocoder object
+
+  This object implements a phase vocoder. The spectral frames are computed
+  using a HanningZ window and a swapped version of the signal to simplify the
+  phase relationships across frames. The window sizes and overlap are specified
+  at creation time. Multiple channels are fully supported.
+
+*/
+
+#ifndef _PHASEVOC_H
+#define _PHASEVOC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** phasevocoder object */
+typedef struct _aubio_pvoc_t aubio_pvoc_t;
+
+/** create phase vocoder object
+
+  \param win_s size of analysis buffer (and length the FFT transform)
+  \param hop_s step size between two consecutive analysis
+  \param channels number of channels
+
+*/
+aubio_pvoc_t * new_aubio_pvoc (ba_uint_t win_s, ba_uint_t hop_s, ba_uint_t channels);
+/** delete phase vocoder object
+
+  \param pv phase vocoder object as returned by new_aubio_pvoc
+
+*/
+void del_aubio_pvoc(aubio_pvoc_t *pv);
+
+/** compute spectral frame
+  
+  This function accepts an input vector of size [channels]x[hop_s]. The
+  analysis buffer is rotated and filled with the new data. After windowing of
+  this signal window, the Fourier transform is computed and returned in
+  fftgrain as two vectors, magnitude and phase.
+
+  \param pv phase vocoder object as returned by new_aubio_pvoc
+  \param in new input signal (hop_s long) 
+  \param fftgrain output spectral frame
+
+*/
+void aubio_pvoc_do(aubio_pvoc_t *pv, fvec_t *in, cvec_t * fftgrain);
+/** compute signal from spectral frame
+
+  This function takes an input spectral frame fftgrain of size
+  [channels]x[buf_s] and computes its inverse Fourier transform. Overlap-add
+  synthesis is then computed using the previously synthetised frames, and the
+  output stored in out.
+  
+  \param pv phase vocoder object as returned by new_aubio_pvoc
+  \param fftgrain input spectral frame
+  \param out output signal (hop_s long) 
+
+*/
+void aubio_pvoc_rdo(aubio_pvoc_t *pv, cvec_t * fftgrain, fvec_t *out);
+
+/** get window size
+
+  \param pv phase vocoder to get the window size from
+
+*/
+ba_uint_t aubio_pvoc_get_win(aubio_pvoc_t* pv);
+/** get hop size
+
+  \param pv phase vocoder to get the hop size from
+
+*/
+ba_uint_t aubio_pvoc_get_hop(aubio_pvoc_t* pv);
+/** get channel number
+ 
+  \param pv phase vocoder to get the number of channels from
+
+*/
+ba_uint_t aubio_pvoc_get_channels(aubio_pvoc_t* pv);
+
+#ifdef __cplusplus
+}
+#endif 
+
+#endif