From: Paul Brossier Date: Thu, 22 Oct 2009 01:13:07 +0000 (+0200) Subject: strip down stable public API, defining add AUBIO_UNSTABLE to access unstable API X-Git-Tag: bzr2git~80 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=83963b3fd8cac670cfbb8e3b9bfecb50b1fc7e82;p=aubio.git strip down stable public API, defining add AUBIO_UNSTABLE to access unstable API --- diff --git a/src/aubio.h b/src/aubio.h index 433a4253..5aad3a1a 100644 --- a/src/aubio.h +++ b/src/aubio.h @@ -63,33 +63,37 @@ extern "C" #include "fvec.h" #include "cvec.h" #include "lvec.h" -#include "mathutils.h" -#include "vecutils.h" -#include "utils/scale.h" -#include "utils/hist.h" -#include "spectral/tss.h" +#include "musicutils.h" #include "temporal/resampler.h" #include "temporal/filter.h" #include "temporal/biquad.h" #include "temporal/a_weighting.h" #include "temporal/c_weighting.h" -#include "spectral/filterbank.h" -#include "spectral/filterbank_mel.h" -#include "spectral/mfcc.h" #include "spectral/fft.h" #include "spectral/phasevoc.h" -#include "spectral/spectral_centroid.h" +#include "spectral/mfcc.h" #include "pitch/pitch.h" +#include "onset/onset.h" +#include "tempo/tempo.h" + +#if AUBIO_UNSTABLE +#include "vecutils.h" +#include "mathutils.h" +#include "utils/scale.h" +#include "utils/hist.h" +#include "spectral/tss.h" +#include "spectral/filterbank.h" +#include "spectral/filterbank_mel.h" #include "pitch/pitchmcomb.h" #include "pitch/pitchyin.h" #include "pitch/pitchyinfft.h" #include "pitch/pitchschmitt.h" #include "pitch/pitchfcomb.h" #include "onset/onsetdetection.h" -#include "onset/onset.h" +#include "spectral/spectral_centroid.h" #include "onset/peakpick.h" #include "tempo/beattracking.h" -#include "tempo/tempo.h" +#endif #ifdef __cplusplus } /* extern "C" */ diff --git a/src/aubio_priv.h b/src/aubio_priv.h index 24aec2ed..0f12904a 100644 --- a/src/aubio_priv.h +++ b/src/aubio_priv.h @@ -68,6 +68,10 @@ #include "types.h" +#define AUBIO_UNSTABLE 1 + +#include "mathutils.h" + /**** * * SYSTEM INTERFACE diff --git a/src/mathutils.c b/src/mathutils.c index 9e5505a3..6ff973b1 100644 --- a/src/mathutils.c +++ b/src/mathutils.c @@ -23,6 +23,7 @@ #include "aubio_priv.h" #include "fvec.h" #include "mathutils.h" +#include "musicutils.h" #include "config.h" diff --git a/src/mathutils.h b/src/mathutils.h index 31cf8b78..9c545e00 100644 --- a/src/mathutils.h +++ b/src/mathutils.h @@ -25,38 +25,13 @@ #ifndef MATHUTILS_H #define MATHUTILS_H +#include "fvec.h" +#include "musicutils.h" + #ifdef __cplusplus extern "C" { #endif -/** create window - - References: - - - Window -function on Wikipedia - - Amalia de Götzen, Nicolas Bernardini, and Daniel Arfib. Traditional (?) -implementations of a phase vocoder: the tricks of the trade. In Proceedings of -the International Conference on Digital Audio Effects (DAFx-00), pages 37–44, -Uni- versity of Verona, Italy, 2000. - ( - ps.gz) - -*/ -fvec_t *new_aubio_window (char_t * window_type, uint_t size); - -/** compute the principal argument - - This function maps the input phase to its corresponding value wrapped in the -range \f$ [-\pi, \pi] \f$. - - \param phase unwrapped phase to map to the unit circle - - \return equivalent phase wrapped to the unit circle - -*/ -smpl_t aubio_unwrap2pi (smpl_t phase); - /** compute the mean of a vector \param s vector to compute mean from @@ -296,61 +271,12 @@ peak is defined as follows: */ uint_t fvec_peakpick (fvec_t * v, uint_t p); -/** convert frequency bin to midi value */ -smpl_t aubio_bintomidi (smpl_t bin, smpl_t samplerate, smpl_t fftsize); - -/** convert midi value to frequency bin */ -smpl_t aubio_miditobin (smpl_t midi, smpl_t samplerate, smpl_t fftsize); - -/** convert frequency bin to frequency (Hz) */ -smpl_t aubio_bintofreq (smpl_t bin, smpl_t samplerate, smpl_t fftsize); - -/** convert frequency (Hz) to frequency bin */ -smpl_t aubio_freqtobin (smpl_t freq, smpl_t samplerate, smpl_t fftsize); - -/** convert frequency (Hz) to midi value (0-128) */ -smpl_t aubio_freqtomidi (smpl_t freq); - -/** convert midi value (0-128) to frequency (Hz) */ -smpl_t aubio_miditofreq (smpl_t midi); - /** return 1 if a is a power of 2, 0 otherwise */ uint_t aubio_is_power_of_two(uint_t a); /** return the next power of power of 2 greater than a */ uint_t aubio_next_power_of_two(uint_t a); -/** compute sound pressure level (SPL) in dB - - This quantity is often wrongly called 'loudness'. - - \param v vector to compute dB SPL from - - \return level of v in dB SPL - -*/ -smpl_t aubio_db_spl (fvec_t * v); - -/** check if buffer level in dB SPL is under a given threshold - - \param v vector to get level from - \param threshold threshold in dB SPL - - \return 0 if level is under the given threshold, 1 otherwise - -*/ -uint_t aubio_silence_detection (fvec_t * v, smpl_t threshold); - -/** get buffer level if level >= threshold, 1. otherwise - - \param v vector to get level from - \param threshold threshold in dB SPL - - \return level in dB SPL if level >= threshold, 1. otherwise - -*/ -smpl_t aubio_level_detection (fvec_t * v, smpl_t threshold); - /** compute normalised autocorrelation function \param input vector to compute autocorrelation from @@ -359,26 +285,6 @@ smpl_t aubio_level_detection (fvec_t * v, smpl_t threshold); */ void aubio_autocorr (fvec_t * input, fvec_t * output); -/** zero-crossing rate (ZCR) - - The zero-crossing rate is the number of times a signal changes sign, - divided by the length of this signal. - - \param v vector to compute ZCR from - - \return zero-crossing rate of v - -*/ -smpl_t aubio_zero_crossing_rate (fvec_t * v); - -/** clean up cached memory at the end of program - - This function should be used at the end of programs to purge all cached - memory. So far it is only useful to clean FFTW's cache. - -*/ -void aubio_cleanup (void); - #ifdef __cplusplus } #endif diff --git a/src/musicutils.h b/src/musicutils.h new file mode 100644 index 00000000..92fd2a27 --- /dev/null +++ b/src/musicutils.h @@ -0,0 +1,134 @@ +/* + Copyright (C) 2003-2009 Paul Brossier + + This file is part of aubio. + + aubio 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 3 of the License, or + (at your option) any later version. + + aubio 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 aubio. If not, see . + +*/ + +/** @file + * various math functions + */ + +#ifndef MUSICUTILS_H +#define MUSICUTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** create window + + References: + + - Window +function on Wikipedia + - Amalia de Götzen, Nicolas Bernardini, and Daniel Arfib. Traditional (?) +implementations of a phase vocoder: the tricks of the trade. In Proceedings of +the International Conference on Digital Audio Effects (DAFx-00), pages 37–44, +Uni- versity of Verona, Italy, 2000. + ( + ps.gz) + +*/ +fvec_t *new_aubio_window (char_t * window_type, uint_t size); + +/** compute the principal argument + + This function maps the input phase to its corresponding value wrapped in the +range \f$ [-\pi, \pi] \f$. + + \param phase unwrapped phase to map to the unit circle + + \return equivalent phase wrapped to the unit circle + +*/ +smpl_t aubio_unwrap2pi (smpl_t phase); + +/** convert frequency bin to midi value */ +smpl_t aubio_bintomidi (smpl_t bin, smpl_t samplerate, smpl_t fftsize); + +/** convert midi value to frequency bin */ +smpl_t aubio_miditobin (smpl_t midi, smpl_t samplerate, smpl_t fftsize); + +/** convert frequency bin to frequency (Hz) */ +smpl_t aubio_bintofreq (smpl_t bin, smpl_t samplerate, smpl_t fftsize); + +/** convert frequency (Hz) to frequency bin */ +smpl_t aubio_freqtobin (smpl_t freq, smpl_t samplerate, smpl_t fftsize); + +/** convert frequency (Hz) to midi value (0-128) */ +smpl_t aubio_freqtomidi (smpl_t freq); + +/** convert midi value (0-128) to frequency (Hz) */ +smpl_t aubio_miditofreq (smpl_t midi); + +/** clean up cached memory at the end of program + + This function should be used at the end of programs to purge all cached + memory. So far it is only useful to clean FFTW's cache. + +*/ +void aubio_cleanup (void); + +/** zero-crossing rate (ZCR) + + The zero-crossing rate is the number of times a signal changes sign, + divided by the length of this signal. + + \param v vector to compute ZCR from + + \return zero-crossing rate of v + +*/ +smpl_t aubio_zero_crossing_rate (fvec_t * v); + +/** compute sound pressure level (SPL) in dB + + This quantity is often wrongly called 'loudness'. + + \param v vector to compute dB SPL from + + \return level of v in dB SPL + +*/ +smpl_t aubio_db_spl (fvec_t * v); + +/** check if buffer level in dB SPL is under a given threshold + + \param v vector to get level from + \param threshold threshold in dB SPL + + \return 0 if level is under the given threshold, 1 otherwise + +*/ +uint_t aubio_silence_detection (fvec_t * v, smpl_t threshold); + +/** get buffer level if level >= threshold, 1. otherwise + + \param v vector to get level from + \param threshold threshold in dB SPL + + \return level in dB SPL if level >= threshold, 1. otherwise + +*/ +smpl_t aubio_level_detection (fvec_t * v, smpl_t threshold); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/src/pitch/pitch.c b/src/pitch/pitch.c index 8b45b61c..cd03bbbe 100644 --- a/src/pitch/pitch.c +++ b/src/pitch/pitch.c @@ -20,8 +20,9 @@ #include "fvec.h" #include "cvec.h" #include "lvec.h" -#include "spectral/phasevoc.h" #include "mathutils.h" +#include "musicutils.h" +#include "spectral/phasevoc.h" #include "temporal/filter.h" #include "temporal/c_weighting.h" #include "pitch/pitchmcomb.h" diff --git a/src/pitch/pitchfcomb.c b/src/pitch/pitchfcomb.c index 68fa89ad..56ebb884 100644 --- a/src/pitch/pitchfcomb.c +++ b/src/pitch/pitchfcomb.c @@ -21,6 +21,7 @@ #include "fvec.h" #include "cvec.h" #include "mathutils.h" +#include "musicutils.h" #include "spectral/fft.h" #include "pitch/pitchfcomb.h" diff --git a/src/vecutils.c b/src/vecutils.c index fb181c90..66c97165 100644 --- a/src/vecutils.c +++ b/src/vecutils.c @@ -1,8 +1,8 @@ #include "config.h" +#include "aubio_priv.h" #include "types.h" #include "fvec.h" #include "cvec.h" -#include "aubio_priv.h" #include "vecutils.h" #define AUBIO_OP(OPNAME, OP, TYPE, OBJ) \