Mercurial > hg > libxtract
changeset 225:62e797c2974a
correction to xtract_odd_even_ratio
author | Sean Enderby <sean.enderby@gmail.com> |
---|---|
date | Mon, 24 Feb 2014 14:32:04 +0000 |
parents | 5ca682ce3392 |
children | 223febe2688b |
files | src/scalar.c xtract/xtract_scalar.h |
diffstat | 2 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/scalar.c Mon Feb 24 13:43:13 2014 +0000 +++ b/src/scalar.c Mon Feb 24 14:32:04 2014 +0000 @@ -622,7 +622,6 @@ int xtract_spectral_inharmonicity(const double *data, const int N, const void *argv, double *result) { - int n = N >> 1, h = 0; double num = 0.0, den = 0.0, fund; const double *freqs, *amps; @@ -656,16 +655,19 @@ int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result) { + int n = N >> 1, h = 0; + double odd = 0.0, even = 0.0, fund, temp; + const double *freqs; - int M = (N >> 1), n; + fund = *(double *)argv; + freqs = data + n; - double odd = 0.0, even = 0.0, temp; - - for(n = 0; n < M; n++) + while(n--) { if((temp = data[n])) { - if(XTRACT_IS_ODD(n)) + h = round(freqs[n] / fund); + if(XTRACT_IS_ODD(h)) { odd += temp; }
--- a/xtract/xtract_scalar.h Mon Feb 24 13:43:13 2014 +0000 +++ b/xtract/xtract_scalar.h Mon Feb 24 14:32:04 2014 +0000 @@ -324,9 +324,9 @@ /* Odd to even harmonic ratio */ /** \brief Extract the Odd to even harmonic ratio of an input vector * - * \param *data: a pointer to the first element in an array of doubles representing the amplitudes of the harmonic spectrum of an audio vector. It is sufficient to pass in a pointer to the first half of the array pointed to by *result from xtract_harmonic_spectrum(). + * \param *data: a pointer to the first element in an array of doubles representing the amplitudes of the harmonic spectrum of an audio vector. It is sufficient to pass in a pointer to array pointed to by *result from xtract_harmonic_spectrum(). * \param N: the number of elements to be considered. If using the array pointed to by *result from xtract_harmonics, N should equal half the total array size i.e., just the amplitudes of the peaks. - * \param *argv: a pointer to NULL + * \param *argv: a pointer to a double representing the fundamental frequency of the input vector. * \param *result: the even/odd harmonic ratio of N values from the array pointed to by *data */ int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result);