aboutsummaryrefslogtreecommitdiff
path: root/lib/unconvert.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/unconvert.c')
-rw-r--r--lib/unconvert.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/unconvert.c b/lib/unconvert.c
new file mode 100644
index 0000000..85392dd
--- /dev/null
+++ b/lib/unconvert.c
@@ -0,0 +1,34 @@
+#include "fftease.h"
+
+
+
+void unconvert( float *C, float *S, int N2, float *lastphase, float fundamental, float factor )
+
+{
+ int i,
+ real,
+ imag,
+ amp,
+ freq;
+ float mag,
+ phase;
+double sin(), cos();
+
+ 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 );
+
+ }
+
+}