aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJamie Bullock <jamie@postlude.co.uk>2006-12-11 17:57:27 +0000
committerJamie Bullock <jamie@postlude.co.uk>2006-12-11 17:57:27 +0000
commitbff72881ced8120c84c3d70e1ffeaa6af5f741d0 (patch)
tree7d0bd26e46241a80a6280126386025800fcb14df /src
parent60b05d46c3450750d2df237bf3ee5825909ea895 (diff)
downloadLibXtract-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')
-rw-r--r--src/scalar.c15
-rw-r--r--src/vector.c2
2 files changed, 9 insertions, 8 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;
}
diff --git a/src/vector.c b/src/vector.c
index 091e3f5..72e97f8 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -271,7 +271,7 @@ int xtract_peaks(float *data, int N, void *argv, float *result){
return (return_code ? return_code : SUCCESS);
}
-
+
int xtract_harmonics(float *data, int N, void *argv, float *result){
int n = (N >> 1), M = n;