aboutsummaryrefslogtreecommitdiffstats
path: root/libs/fft.h
diff options
context:
space:
mode:
authormick grierson <mickgrierson@gmail.com>2015-07-26 23:57:38 +0100
committermick grierson <mickgrierson@gmail.com>2015-07-26 23:57:38 +0100
commit68ee8eba9c3834604d220f4bf56e7e9d506a77a7 (patch)
treec021e67cc0ebc042a896259c2e508b8b60ad6c6d /libs/fft.h
parentcb3e92e75b1492bc1434431e975d1acf145c84fc (diff)
Some initial changes that are long overdue part 1
Diffstat (limited to 'libs/fft.h')
-rw-r--r--libs/fft.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/libs/fft.h b/libs/fft.h
new file mode 100644
index 0000000..7f0e688
--- /dev/null
+++ b/libs/fft.h
@@ -0,0 +1,79 @@
+/*
+ * maximilian
+ * platform independent synthesis library using portaudio or rtaudio
+ *
+ * Created by Mick Grierson on 29/12/2009.
+ * Copyright 2009 Mick Grierson & Strangeloop Limited. All rights reserved.
+ * Thanks to the Goldsmiths Creative Computing Team.
+ * Special thanks to Arturo Castro for the PortAudio implementation.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef _FFT
+#define _FFT
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846 /* pi */
+#endif
+
+#ifdef __APPLE_CC__
+#include <Accelerate/Accelerate.h>
+#endif
+
+
+
+class fft {
+
+public:
+
+ fft(int fftSize);
+ ~fft();
+
+ int n; //fftSize
+ int half; //halfFFTSize
+
+ float *in_real, *out_real, *in_img, *out_img;
+
+#ifdef __APPLE_CC__
+ int log2n; //log2(n);
+ FFTSetup setupReal;
+ COMPLEX_SPLIT A;
+ float *polar;
+ void powerSpectrum_vdsp(int start, float *data, float *window, float *magnitude,float *phase);
+ void inversePowerSpectrum_vdsp(int start, float *finalOut, float *window, float *magnitude,float *phase);
+ void convToDB_vdsp(float *in, float *out);
+#endif
+
+ /* Calculate the power spectrum */
+ void powerSpectrum(int start, float *data, float *window, float *magnitude, float *phase);
+ /* ... the inverse */
+ void inversePowerSpectrum(int start, float *finalOut, float *window, float *magnitude,float *phase);
+ void convToDB(float *in, float *out);
+
+ static void genWindow(int whichFunction, int NumSamples, float *window);
+
+};
+
+
+#endif