aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorymherklotz <ymherklotz@gmail.com>2018-03-08 15:08:05 +0000
committerymherklotz <ymherklotz@gmail.com>2018-03-08 15:08:05 +0000
commit90683eeefb0386d07c57faa0d9ce5b416acc0d62 (patch)
tree3d673aacabf8ed74b5f8008f2e7cf0178625821b
parente0643a05b822bc2b24b2b863df6a2eed3aa97291 (diff)
downloadNoiseSilencer-90683eeefb0386d07c57faa0d9ce5b416acc0d62.tar.gz
NoiseSilencer-90683eeefb0386d07c57faa0d9ce5b416acc0d62.zip
add power
-rw-r--r--Project/RTDSP/.launches/RTDSP.launch2
-rw-r--r--Project/RTDSP/enhance.c39
2 files changed, 22 insertions, 19 deletions
diff --git a/Project/RTDSP/.launches/RTDSP.launch b/Project/RTDSP/.launches/RTDSP.launch
index a54495a..fe8b6e4 100644
--- a/Project/RTDSP/.launches/RTDSP.launch
+++ b/Project/RTDSP/.launches/RTDSP.launch
@@ -13,7 +13,7 @@
<stringAttribute key="CCEDebugOptions.TARGET_CONFIGURATION_OPTION" value="full"/>
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList/&gt;&#13;&#10;"/>
<stringAttribute key="com.ti.ccstudio.debug.core.MRU_PROGRAM_NAME" value="C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out"/>
-<stringAttribute key="com.ti.ccstudio.debug.core.MRU_MODULES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;modules&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\lab3\RTDSP\Debug\RTDSP.out&quot; time=&quot;Fri Jan 19 14:07:28 GMT 2018&quot; time_long=&quot;1516370848357&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\Github\RTDSP\lab3\RTDSP\Debug\RTDSP.out&quot; time=&quot;Tue Jan 23 11:15:11 GMT 2018&quot; time_long=&quot;1516706111426&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\lab4\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Feb 01 11:44:21 GMT 2018&quot; time_long=&quot;1517485461898&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\lab4\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Feb 15 13:55:55 GMT 2018&quot; time_long=&quot;1518702955359&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\Github\RTDSP\lab5\RTDSP\Debug\RTDSP.out&quot; time=&quot;Tue Feb 27 12:18:55 GMT 2018&quot; time_long=&quot;1519733935329&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\lab5\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Mar 01 13:36:20 GMT 2018&quot; time_long=&quot;1519911380476&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\Project\RTDSP\Debug\RTDSP.out&quot; time=&quot;Mon Mar 05 11:30:19 GMT 2018&quot; time_long=&quot;1520249419272&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Mar 08 12:40:39 GMT 2018&quot; time_long=&quot;1520512839256&quot;/&gt;&#13;&#10;&lt;/modules&gt;&#13;&#10;"/>
+<stringAttribute key="com.ti.ccstudio.debug.core.MRU_MODULES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;modules&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\lab3\RTDSP\Debug\RTDSP.out&quot; time=&quot;Fri Jan 19 14:07:28 GMT 2018&quot; time_long=&quot;1516370848357&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\Github\RTDSP\lab3\RTDSP\Debug\RTDSP.out&quot; time=&quot;Tue Jan 23 11:15:11 GMT 2018&quot; time_long=&quot;1516706111426&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\lab4\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Feb 01 11:44:21 GMT 2018&quot; time_long=&quot;1517485461898&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\lab4\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Feb 15 13:55:55 GMT 2018&quot; time_long=&quot;1518702955359&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\Github\RTDSP\lab5\RTDSP\Debug\RTDSP.out&quot; time=&quot;Tue Feb 27 12:18:55 GMT 2018&quot; time_long=&quot;1519733935329&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\lab5\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Mar 01 13:36:20 GMT 2018&quot; time_long=&quot;1519911380476&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\GIT\RTDSP\Project\RTDSP\Debug\RTDSP.out&quot; time=&quot;Mon Mar 05 11:30:19 GMT 2018&quot; time_long=&quot;1520249419272&quot;/&gt;&#13;&#10;&lt;module name=&quot;C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out&quot; time=&quot;Thu Mar 08 15:05:35 GMT 2018&quot; time_long=&quot;1520521535037&quot;/&gt;&#13;&#10;&lt;/modules&gt;&#13;&#10;"/>
<stringAttribute key="CCEDebugOptions.CPU_NAME" value="Spectrum Digital DSK-EVM-eZdsp onboard USB Emulator_0/TMS320C671X"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTDSP"/>
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;globalVariableList/&gt;&#13;&#10;"/>
diff --git a/Project/RTDSP/enhance.c b/Project/RTDSP/enhance.c
index 5f2e1ad..728194c 100644
--- a/Project/RTDSP/enhance.c
+++ b/Project/RTDSP/enhance.c
@@ -103,9 +103,10 @@ volatile int frame_ptr=0; /* Frame pointer */
volatile int frame_ctr = 0;
volatile int m_ptr = 0;
float lambda = 0.05;
-float alpha = 20;
+float alpha = 400;
double avg = 0;
MVal M[NUM_M];
+float mag_N_X;
float K;
float time_constant = 50E-6; /* Time constant in ms */
int started = 0;
@@ -150,12 +151,8 @@ void main()
outgain=OUTGAIN;
for (k = 0; k < NUM_M; ++k) {
- int i;
M[k].pow = (float *) calloc(FFTLEN, sizeof(float));
- for(i = 0; i < FFTLEN; ++i) {
- M[k].pow[i] = MAX_FLOAT;
- }
- M[k].sum = MAX_FLOAT;
+ M[k].sum = 0;
}
// initializing the value to estimate the low pass filter
@@ -205,13 +202,20 @@ void init_HWI(void)
// Spectrum calculations for the new values
void write_spectrum(void) {
unsigned int k;
- M[m_ptr].sum = 0;
- for(k = 0; k < FFTLEN; ++k) {
- if(power_in[k] < M[m_ptr].pow[k] && power_in[k] != 0) {
+ if(M[m_ptr].sum == 0) {
+ for(k = 0; k < FFTLEN; ++k) {
M[m_ptr].pow[k] = power_in[k];
M[m_ptr].sum += power_in[k];
- } else {
- M[m_ptr].sum += M[m_ptr].pow[k];
+ }
+ } else {
+ M[m_ptr].sum = 0;
+ for(k = 0; k < FFTLEN; ++k) {
+ if(power_in[k] < M[m_ptr].pow[k]) {
+ M[m_ptr].pow[k] = power_in[k];
+ M[m_ptr].sum += power_in[k];
+ } else {
+ M[m_ptr].sum += M[m_ptr].pow[k];
+ }
}
}
}
@@ -221,7 +225,7 @@ void get_noise(void) {
int min_index = 0, k;
for(k = 1; k < NUM_M; ++k) {
- if (M[k].sum < min_sum) {
+ if (M[k].sum < min_sum && M[k].sum != 0) {
min_sum = M[k].sum;
min_index = k;
}
@@ -235,7 +239,6 @@ void process_frame(void)
{
int k, m;
int io_ptr0;
- float mag_N_X;
/* work out fraction of available CPU time used by algorithm */
cpufrac = ((float) (io_ptr & (FRAMEINC - 1)))/FRAMEINC;
@@ -269,8 +272,8 @@ void process_frame(void)
fft(FFTLEN, fft_out);
// calculate the power spectrum
- for (k = 0; i < FFTLEN; ++l) {
- power_in[k] = pow(fft_out[k].r, 2) + pow(fft_out[k].i, 2);
+ for (k = 0; k < FFTLEN; ++k) {
+ power_in[k] = fft_out[k].r * fft_out[k].r + fft_out[k].i * fft_out[k].i;
}
// Get average of fft_out and write to Spectrum
@@ -285,15 +288,15 @@ void process_frame(void)
if(++m_ptr == NUM_M) m_ptr = 0;
M[m_ptr].sum = 0;
for(i = 0; i < FFTLEN; ++i) {
- M[m_ptr].pow[i] = power_in[k];
- M[m_ptr].sum += power_in[k];
+ M[m_ptr].pow[i] = power_in[i];
+ M[m_ptr].sum += power_in[i];
}
}
// max(lambda, |N(w)/g(w)|
for (k = 0; k < FFTLEN; ++k) {
float g;
- mag_N_X = 1 - alpha * noise[k]/power_in[k];
+ mag_N_X = sqrt(1 - alpha * noise[k]/power_in[k]);
g = mag_N_X > lambda ? mag_N_X : lambda;
fft_out[k] = rmul(g, fft_out[k]);
}