aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/fftease/src/unconvert.c
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/fftease/src/unconvert.c')
-rw-r--r--externals/grill/fftease/src/unconvert.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/externals/grill/fftease/src/unconvert.c b/externals/grill/fftease/src/unconvert.c
new file mode 100644
index 00000000..54bb6ca1
--- /dev/null
+++ b/externals/grill/fftease/src/unconvert.c
@@ -0,0 +1,36 @@
+#include "pv.h"
+
+
+
+void unconvert(float *C, float *S, int N2, float *lastphase, float fundamental, float factor )
+{
+ int i,
+ real,
+ imag,
+ amp,
+ freq;
+ float mag,
+ phase;
+
+ for ( i = 0; i <= N2; i++ ) {
+
+ imag = freq = ( real = amp = i<<1 ) + 1;
+
+ if ( i == N2 )
+ real = 1;
+
+ mag = C[amp];
+ lastphase[i] += C[freq] - i*fundamental;
+ phase = lastphase[i]*factor;
+ S[real] = mag*cos( phase );
+
+ if ( i != N2 )
+ S[imag] = -mag*sin( phase );
+ /*
+ if( i == 10 ) {
+ fprintf(stderr,"unconvert: amp: %f freq: %f funda %f fac %f\n", C[amp],C[freq],fundamental,factor);
+ }
+ */
+ }
+
+}