Mercurial > hg > audio-file-loader
view libs/aubioFullOSXUni/include/aubio/fft.h @ 1:ba2a17cf81bf
first working version of audio file loder. Loads bach clip from the apps->audio-file-loader->bin->data->sounds foler. Three classes: SoundFileLoader does the loading and parsing of thefile with libSndFile. audio samples are kept in AudioFile and analysis of features are kept in AudioAnalysis, at this stage just chromagramm and basic energy
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Sun, 04 Sep 2011 22:45:35 +0100 |
parents | bcb0d40158f4 |
children |
line wrap: on
line source
/* 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 Fast Fourier Transform object */ #ifndef FFT_H_ #define FFT_H_ /* note that <complex.h> is not included here but only in aubio_priv.h, so that * c++ projects can still use their own complex definition. */ #include <fftw3.h> #ifdef HAVE_COMPLEX_H #if FFTW3F_SUPPORT #define FFTW_TYPE fftwf_complex #else #define FFTW_TYPE fftw_complex #endif #else #if FFTW3F_SUPPORT /** fft data type */ #define FFTW_TYPE float #else /** fft data type */ #define FFTW_TYPE double #endif #endif #ifdef __cplusplus extern "C" { #endif /** fft data type */ typedef FFTW_TYPE fft_data_t; /** FFT object This object computes forward and backward FFTs, using the complex type to store the results. The phase vocoder or aubio_mfft_t objects should be preferred to using directly aubio_fft_t. The FFT are computed using FFTW3 (although support for another library could be added). */ typedef struct _aubio_fft_t aubio_fft_t; /** create new FFT computation object \param size length of the FFT */ aubio_fft_t * new_aubio_fft(ba_uint_t size); /** delete FFT object \param s fft object as returned by new_aubio_fft */ void del_aubio_fft(aubio_fft_t * s); /** compute forward FFT \param s fft object as returned by new_aubio_fft \param data input signal \param spectrum output spectrum \param size length of the input vector */ void aubio_fft_do (const aubio_fft_t *s, const smpl_t * data, fft_data_t * spectrum, const ba_uint_t size); /** compute backward (inverse) FFT \param s fft object as returned by new_aubio_fft \param spectrum input spectrum \param data output signal \param size length of the input vector */ void aubio_fft_rdo(const aubio_fft_t *s, const fft_data_t * spectrum, smpl_t * data, const ba_uint_t size); /** compute norm vector from input spectrum \param norm magnitude vector output \param spectrum spectral data input \param size size of the vectors */ void aubio_fft_getnorm(smpl_t * norm, fft_data_t * spectrum, ba_uint_t size); /** compute phase vector from input spectrum \param phase phase vector output \param spectrum spectral data input \param size size of the vectors */ void aubio_fft_getphas(smpl_t * phase, fft_data_t * spectrum, ba_uint_t size); /** FFT object (using cvec) This object works similarly as aubio_fft_t, except the spectral data is stored in a cvec_t as two vectors, magnitude and phase. */ typedef struct _aubio_mfft_t aubio_mfft_t; /** create new FFT computation object \param winsize length of the FFT \param channels number of channels */ aubio_mfft_t * new_aubio_mfft(ba_uint_t winsize, ba_uint_t channels); /** compute forward FFT \param fft fft object as returned by new_aubio_mfft \param in input signal \param fftgrain output spectrum */ void aubio_mfft_do (aubio_mfft_t * fft,fvec_t * in,cvec_t * fftgrain); /** compute backward (inverse) FFT \param fft fft object as returned by new_aubio_mfft \param fftgrain input spectrum (cvec) \param out output signal */ void aubio_mfft_rdo(aubio_mfft_t * fft,cvec_t * fftgrain, fvec_t * out); /** delete FFT object \param fft fft object as returned by new_aubio_mfft */ void del_aubio_mfft(aubio_mfft_t * fft); #ifdef __cplusplus } #endif #endif