#if !defined _MAKEWAVE_H #define _MAKEWAVE_H int makewave(unsigned char * buffer, DWORD size); int myplaysound(unsigned char * buffer, DWORD size); class cbhrecord { public: unsigned char * tbuffer; DWORD tbsize; unsigned char * buf1; DWORD bsize; unsigned char * buf2; WAVEFORMATEX waveformat; HWAVEIN hwavein; WAVEHDR pwh1,pwh2; int state; DWORD rsize; double noiselevel; cbhrecord() { state = 0; tbsize = 4096*128; bsize = 4096; rsize = 0; tbuffer = new unsigned char[tbsize]; buf1 = new unsigned char[bsize]; buf2 = new unsigned char[bsize]; waveformat.wFormatTag=WAVE_FORMAT_PCM; waveformat.nChannels=1; waveformat.nSamplesPerSec = 44100; waveformat.nAvgBytesPerSec = 44100; waveformat.nBlockAlign = 1; waveformat.wBitsPerSample = 8; waveformat.cbSize = 0; pwh1.dwBufferLength=bsize; pwh1.dwFlags=0; pwh1.lpData=(char *)buf1; pwh2.dwBufferLength=bsize; pwh2.dwFlags=0; pwh2.lpData=(char *)buf2; }; int start(HWND hWnd); int resycle(DWORD p); int stop(); int isnoise(unsigned char * buf, DWORD size); ~cbhrecord(){ if(state) stop(); delete []tbuffer; delete []buf1; delete []buf2; } }; class cbhanalysis { public: double * pr; int effect; int tmsize; double * fbuffer; int * noise; unsigned char * samplewave; int samplesize; cbhanalysis(){ effect = 0; tmsize = 0; fbuffer = new double[512]; noise = new int[512]; samplewave = new unsigned char[1000]; pr = new double[16384]; }; ~cbhanalysis(){ delete []fbuffer; delete []noise; delete []samplewave; delete []pr; }; int isnoise(unsigned char * buffer, int size, double & freq); void calculate(unsigned char * buffer, int size); }; void drawcurve(CDC &myDC, CRect &rect, double * buffer, unsigned int size, int pos=0, int pnum=0, double *pks=NULL); void drawcurve(CDC &myDC, CRect &rect, unsigned char * buffer, unsigned int size); double peakvalue(double * pr, int n); int findpeaks(double * pr, double * peaks); double getfreq(int peaknumber, double * peaks); void playfreq(int tmsize, double * fbuffer); double searchfreq(double * fbuffer, double &f); #endif //!defined _MAKEWAVE_H