digital audio mod11 / Mbed 2 deprecated equalizerseperate

Dependencies:   mbed

Committer:
rik
Date:
Wed Mar 29 08:42:31 2017 +0000
Revision:
1:099f1a4c5fc8
Parent:
0:8c128e047ec9
first compile (full of bugs?)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rik 0:8c128e047ec9 1 #include "mbed.h"
rik 1:099f1a4c5fc8 2 #include "FFT.h"
rik 0:8c128e047ec9 3 #include "LookupTables.h"
rik 0:8c128e047ec9 4 #include "complexmath.h"
rik 0:8c128e047ec9 5 #include <math.h>
rik 0:8c128e047ec9 6
rik 1:099f1a4c5fc8 7 //TODO right values for the LUT equalizer
rik 0:8c128e047ec9 8
rik 0:8c128e047ec9 9 //TODO Build all functions in FFT.cpp
rik 0:8c128e047ec9 10
rik 0:8c128e047ec9 11 //TODO fix main for a test wave and communication to serial
rik 0:8c128e047ec9 12
rik 0:8c128e047ec9 13 Serial pc(USBTX, USBRX);
rik 1:099f1a4c5fc8 14 float sampleDataIn[512];
rik 0:8c128e047ec9 15 float sampleDataOut[512];
rik 1:099f1a4c5fc8 16 complex_num freqValues[512];
rik 1:099f1a4c5fc8 17 complex_num reordereddata[512];
rik 0:8c128e047ec9 18 int datalength = 512;//uitrekenen?
rik 0:8c128e047ec9 19
rik 0:8c128e047ec9 20 int main()
rik 0:8c128e047ec9 21 {
rik 0:8c128e047ec9 22 pc.baud(115200);
rik 0:8c128e047ec9 23 pc.printf ("building input:[");
rik 0:8c128e047ec9 24 for (int i=0; i<511; i++){
rik 0:8c128e047ec9 25 if (i%128<64){
rik 0:8c128e047ec9 26 sampleDataIn[i]=1000;
rik 1:099f1a4c5fc8 27 pc.printf ("%f,\t",sampleDataIn[i]);
rik 0:8c128e047ec9 28 }
rik 0:8c128e047ec9 29 else{
rik 0:8c128e047ec9 30 sampleDataIn[i]=0;
rik 1:099f1a4c5fc8 31 pc.printf ("%f,\t",sampleDataIn[i]);
rik 0:8c128e047ec9 32 }
rik 1:099f1a4c5fc8 33 }
rik 0:8c128e047ec9 34 sampleDataIn[511]=0;
rik 1:099f1a4c5fc8 35 pc.printf("%f]\r\n",sampleDataIn[511]);
rik 1:099f1a4c5fc8 36 //dont performEqualizer(&sampleDataIn, &sampleDataOut, &freqValues, datalength); but seperate functions for testing purposes
rik 1:099f1a4c5fc8 37 // - Calculating and substracting the mean -
rik 1:099f1a4c5fc8 38 subMean(sampleDataIn, datalength);
rik 1:099f1a4c5fc8 39 pc.printf ("zero meaned:[");
rik 1:099f1a4c5fc8 40 for (int i=0; i<511; i++){
rik 1:099f1a4c5fc8 41 pc.printf ("%f,\t",sampleDataIn[i]);
rik 1:099f1a4c5fc8 42 }
rik 1:099f1a4c5fc8 43 pc.printf("%f]\r\n",sampleDataIn[511]);
rik 1:099f1a4c5fc8 44 // - Applying a hanning window - N multiplications
rik 1:099f1a4c5fc8 45 applyHanningTable(sampleDataIn, datalength);
rik 1:099f1a4c5fc8 46 pc.printf ("hanned:[");
rik 1:099f1a4c5fc8 47 for (int i=0; i<511; i++){
rik 1:099f1a4c5fc8 48 pc.printf ("%f,\t",sampleDataIn[i]);
rik 1:099f1a4c5fc8 49 }
rik 1:099f1a4c5fc8 50 pc.printf("%f]\r\n",sampleDataIn[511]);
rik 1:099f1a4c5fc8 51 // It then applies a radix-2 Cooley Tukey FFT to create a fourier transform
rik 1:099f1a4c5fc8 52 reverseCooleyTukeyRadix2(sampleDataIn, freqValues, datalength);
rik 1:099f1a4c5fc8 53
rik 1:099f1a4c5fc8 54 for (int i = 0; i < datalength; i++){
rik 1:099f1a4c5fc8 55 reordereddata[reversebit_lut_i[i]].real = freqValues[i].real;
rik 1:099f1a4c5fc8 56 reordereddata[reversebit_lut_i[i]].imaginary = freqValues[i].imaginary;
rik 1:099f1a4c5fc8 57 }
rik 1:099f1a4c5fc8 58 pc.printf ("real part of freqValues:[");
rik 1:099f1a4c5fc8 59 for (int i=0; i<511; i++){
rik 1:099f1a4c5fc8 60 pc.printf ("%f,\t",reordereddata[i].real);
rik 1:099f1a4c5fc8 61 }
rik 1:099f1a4c5fc8 62 pc.printf("%f]\r\n",reordereddata[511].real);
rik 1:099f1a4c5fc8 63 pc.printf ("imaginary part of freqValues:[");
rik 1:099f1a4c5fc8 64 for (int i=0; i<511; i++){
rik 1:099f1a4c5fc8 65 pc.printf ("%f,\t",reordereddata[i].imaginary);
rik 1:099f1a4c5fc8 66 }
rik 1:099f1a4c5fc8 67 pc.printf("%f]\r\n",reordereddata[511].imaginary);
rik 1:099f1a4c5fc8 68 // It gets equalized
rik 1:099f1a4c5fc8 69 //equalizer(complex_num* freqdata);
rik 1:099f1a4c5fc8 70 // back to time domain
rik 1:099f1a4c5fc8 71 cooleyTukeyBack(sampleDataOut, freqValues, datalength);
rik 0:8c128e047ec9 72 pc.printf ("Equalized data :[");
rik 0:8c128e047ec9 73 for (int i=0; i<511; i++) {
rik 0:8c128e047ec9 74 pc.printf ("%f,\t",sampleDataOut[i]);
rik 0:8c128e047ec9 75 }
rik 0:8c128e047ec9 76 pc.printf("%f]\r\n",sampleDataOut[511]);
rik 0:8c128e047ec9 77 while(1) {
rik 0:8c128e047ec9 78 }
rik 0:8c128e047ec9 79
rik 0:8c128e047ec9 80
rik 0:8c128e047ec9 81
rik 0:8c128e047ec9 82
rik 0:8c128e047ec9 83 }