8 mic channels now recorded. Fixed bad mic selection and reduced gain.

This commit is contained in:
Ross Owen
2015-09-23 16:05:03 +01:00
parent 5306fda2ab
commit e114e32503
2 changed files with 43 additions and 19 deletions

View File

@@ -262,7 +262,7 @@ static inline unsigned DoSampleTransfer(chanend c_out, int readBuffNo, unsigned
{ {
int tmp = inuint(c_out); int tmp = inuint(c_out);
samplesOut[i] = tmp; samplesOut[i] = tmp;
samplesOut[i] = samplesIn_0[i]; samplesOut[i] = samplesIn_0[0];
} }
#else #else
inuint(c_out); inuint(c_out);
@@ -702,10 +702,13 @@ unsigned static deliver(chanend c_out, chanend ?c_spd_out,
c_pdm_pcm <: 1; c_pdm_pcm <: 1;
c_pdm_pcm :> samplesIn_0[0]; c_pdm_pcm :> samplesIn_0[0];
c_pdm_pcm :> samplesIn_0[1]; c_pdm_pcm :> samplesIn_0[1];
c_pdm_pcm :> samplesIn_0[2];
c_pdm_pcm :> samplesIn_0[3];
c_pdm_pcm :> samplesIn_0[4];
c_pdm_pcm :> samplesIn_0[5];
c_pdm_pcm :> samplesIn_0[6];
c_pdm_pcm :> samplesIn_0[7];
#endif #endif
} }

View File

@@ -211,19 +211,19 @@ void example(streaming chanend c_ds_output_0, streaming chanend c_ds_output_1, s
// audio[buffer] is good to go // audio[buffer] is good to go
int a = dc_offset_removal( audio[buffer].data[0][0].ch_b, prev_x[0], prev_y[0]); int a = dc_offset_removal( audio[buffer].data[0][0].ch_a, prev_x[0], prev_y[0]);
int b = dc_offset_removal( audio[buffer].data[1][0].ch_a, prev_x[1], prev_y[1]); int b = dc_offset_removal( audio[buffer].data[0][0].ch_b, prev_x[0], prev_y[0]);
int c = dc_offset_removal( audio[buffer].data[1][0].ch_b, prev_x[2], prev_y[2]); int c = dc_offset_removal( audio[buffer].data[1][0].ch_a, prev_x[1], prev_y[1]);
int d = dc_offset_removal( audio[buffer].data[2][0].ch_a, prev_x[3], prev_y[3]); int d = dc_offset_removal( audio[buffer].data[1][0].ch_b, prev_x[2], prev_y[2]);
int e = dc_offset_removal( audio[buffer].data[2][0].ch_b, prev_x[4], prev_y[4]); int e = dc_offset_removal( audio[buffer].data[2][0].ch_a, prev_x[3], prev_y[3]);
int f = dc_offset_removal( audio[buffer].data[3][0].ch_a, prev_x[5], prev_y[5]); int f = dc_offset_removal( audio[buffer].data[2][0].ch_b, prev_x[4], prev_y[4]);
int g = dc_offset_removal( audio[buffer].data[3][0].ch_b, prev_x[6], prev_y[6]); int g = dc_offset_removal( audio[buffer].data[3][0].ch_a, prev_x[5], prev_y[5]);
int h = dc_offset_removal( audio[buffer].data[3][0].ch_b, prev_x[6], prev_y[6]);//Expect dead
// printf("%x %x %x %x %x %x %x\n", a, b, c, d, e, f, g); //printf("%x %x %x %x %x %x %x %x\n", a, b, c, d, e, f, g, h);
unsigned v = a*a; unsigned v = a*a;
select { select {
case cc:> int:{ case cc:> int:{
only_one_mic = 1-only_one_mic; only_one_mic = 1-only_one_mic;
@@ -232,13 +232,24 @@ void example(streaming chanend c_ds_output_0, streaming chanend c_ds_output_1, s
default:break; default:break;
} }
#define GAIN 7 #define GAIN 5
if((-a) > max) max = (-a); if((-a) > max) max = (-a);
if(a > max) max = a; if(a > max) max = a;
int output; int output;
if(only_one_mic){ if(only_one_mic){
output = a<<GAIN; output = a<<GAIN;
c_pcm_out :> unsigned req;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
c_pcm_out <: output;
} else { } else {
if((-a) > max) max = (-a); if((-a) > max) max = (-a);
if(a > max) max = a; if(a > max) max = a;
@@ -252,16 +263,26 @@ void example(streaming chanend c_ds_output_0, streaming chanend c_ds_output_1, s
if(e > max) max = e; if(e > max) max = e;
if((-f) > max) max = (-f); if((-f) > max) max = (-f);
if(f > max) max = f; if(f > max) max = f;
if((-g) > max) max = (-g);
if(g > max) max = g;
output = a+b+c+d+e+f+g+g; output = a+b+c+d+e+f+g+g;
output >>=3; output >>=3;
output = output<<(GAIN+1); output = output<<(GAIN);
c_pcm_out :> unsigned req;
c_pcm_out <: output;
c_pcm_out <: a << GAIN;
c_pcm_out <: b << GAIN;
c_pcm_out <: c << GAIN;
c_pcm_out <: d << GAIN;
c_pcm_out <: e << GAIN;
c_pcm_out <: f << GAIN;
c_pcm_out <: g << GAIN;
} }
max = max - (max>>17); max = max - (max>>17);
c_pcm_out :> unsigned req;
c_pcm_out <: output;
c_pcm_out <: output;
} }
} }
} }
@@ -297,7 +318,7 @@ void pcm_pdm_mic(streaming chanend c_pcm_out)
c_4x_pdm_mic_0, c_4x_pdm_mic_1); c_4x_pdm_mic_0, c_4x_pdm_mic_1);
pdm_to_pcm_4x(c_4x_pdm_mic_0, c_ds_output_0); pdm_to_pcm_4x(c_4x_pdm_mic_0, c_ds_output_0);
pdm_to_pcm_4x(c_4x_pdm_mic_1, c_ds_output_1); pdm_to_pcm_4x(c_4x_pdm_mic_1, c_ds_output_1);
example(c_ds_output_0, c_ds_output_1, c_pcm_out, c); example(c_ds_output_0, c_ds_output_1, c_pcm_out, c);