Help with MEMS Microphone configuration

I still think it's your PS or a cable near your microphone. Here's the loop of my code.

void loop(){
if(jj++%30==0){  //was overflow or first time 
for(li=0,i=0;i<2000;i++){
 li+=analogRead(3);
 delayMicroseconds(14);
 } 
//Serial.println("Cal");
avg=li/2000;
//Serial.println(avg);
}  //first time
nhit=nsil=mxp=np=0;
for(mx=0,li=0,lj=0,k=0;k<10000;k++){
i=analogRead(3);
delayMicroseconds(50);
j=analogRead(3);
delayMicroseconds(50-5);
//delay(2); Narcoleptic doesn't delay
ii=abs(((i+j)>>1)-avg);
li+=ii;

if(k==0)was=ii;
lj+=abs(was-ii);
was=ii;
if(k%100==0){
  if(mxp>=avg+30)np++;
  mxp=0;
  }
if(i>mx)mx=i;
if(j>mx)mx=j;
if(j>mxp)mxp=j;
if(ii>=30)nhit++;
if(ii<=5)nsil++;
//Serial.print(i);WR32
//Serial.print(j);WR32
}
//Narcoleptic.delay(4000);
li-=12000;
if(li<0)li=0;
mx-=avg;
mx-=4;
nmid=10000-nsil-nhit;
if(nmid>=100){  //100 or 1000 USB
//  if(!nrow)printDate();
printDate(); 
  fprn(++nrow,3);WR32
  fprn(li/1000,4);WR32  //total energy
  fprn(lj/1000,4);WR32  //high freq only near limit or >1/2, does not change with truck or heater or claps or snaps or clicks
  fprn(mx,3);WR32       //peak value
  fprn(np,2);WR32       //# periods out of 100/sec
  fprn(nhit,4);WR32     //# >=30
  fprn(nmid,4);WR32     //# <30,>5
  WR13
  } else nrow=0;
}