diff options
author | Jamie Bullock <jamie@postlude.co.uk> | 2006-12-11 17:57:27 +0000 |
---|---|---|
committer | Jamie Bullock <jamie@postlude.co.uk> | 2006-12-11 17:57:27 +0000 |
commit | bff72881ced8120c84c3d70e1ffeaa6af5f741d0 (patch) | |
tree | 7d0bd26e46241a80a6280126386025800fcb14df /src/scalar.c | |
parent | 60b05d46c3450750d2df237bf3ee5825909ea895 (diff) | |
download | LibXtract-bff72881ced8120c84c3d70e1ffeaa6af5f741d0.tar.gz LibXtract-bff72881ced8120c84c3d70e1ffeaa6af5f741d0.tar.bz2 LibXtract-bff72881ced8120c84c3d70e1ffeaa6af5f741d0.zip |
Changes to xtract_inharmonicity - made parameters consistent with other
xtractors that use peak spectrum. Fixed memory alloc bug in pd example.
Diffstat (limited to 'src/scalar.c')
-rw-r--r-- | src/scalar.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/scalar.c b/src/scalar.c index cf453f9..8d0f821 100644 --- a/src/scalar.c +++ b/src/scalar.c @@ -316,19 +316,20 @@ int xtract_rms_amplitude(float *data, int N, void *argv, float *result){ int xtract_inharmonicity(float *data, int N, void *argv, float *result){ - int n = N; + int n = N >> 1; float num = 0.f, den = 0.f, - *fund, *freq; + fund, *freqs, *amps; - fund = *(float **)argv; - freq = fund+1; + fund = *(float *)argv; + freqs = data; + amps = data + n; while(n--){ - num += abs(freq[n] - n * *fund) * SQ(data[n]); - den += SQ(data[n]); + num += abs(freqs[n] - n * fund) * SQ(amps[n]); + den += SQ(amps[n]); } - *result = (2 * num) / (*fund * den); + *result = (2 * num) / (fund * den); return SUCCESS; } |