//
// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Thu Jul 5 15:07:23 PDT 2001
// Last Modified: Thu Jul 5 18:33:20 PDT 2001
// Filename: ...sig/examples/sig/sigAudio/micinfo.cpp
// Syntax: C++
//
// Description: Simple example audio reading program that measures
// the basic audio quality of the audio input from
// the microphone.
//
#include "sigAudio.h"
////////////////////////////////////////////////////////////////////////
int main(void) {
AudioIn audioin;
audioin.open();
double sample = 0.0;
double allsample = 0.0;
double sqsample = 0.0;
double rms = 0.0;
int total = 100000;
int timeoffset = 10000;
cout << "Reading input from microphone." << endl;
cout << "The input to the mic should be quiet for this test. " << endl;
for (int i=0; i<total; i++) {
audioin.action();
sample = audioin.output(0);
if (i > timeoffset) {
allsample += sample;
sqsample += sample * sample;
}
}
cout << "Done recording input audio." << endl;
cout << "DC offset : " << sample/(total-timeoffset) << endl;
rms = sqrt(sqsample/(total-timeoffset));
cout << "RMS signal : " << rms << endl;
cout << "SNR : " << -20 * log10(rms) << endl;
cout << "Linear Bits: " << (-20 * log10(rms))/6.02 << endl;
audioin.close();
return 0;
}
////////////////////////////////////////////////////////////////////////
/* Sample analyses:
### A GOOD MICROPHONE/SOUNDCARD:
DC offset : -1.01725e-09
RMS signal : 7.16089e-05
SNR : 82.9007
Linear Bits: 13.7709
### A BAD MICROPHONE/SOUNDCARD:
DC offset : -2.516e-07
RMS signal : 0.0229982
SNR : 32.7661
Linear Bits: 5.44288
*/
// md5sum: 54682ff9d5110540afa2187b2531f6f1 micinfo.cpp [20050403]