Soundin.h
上传用户:wen82zi81
上传日期:2007-01-03
资源大小:40k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. // Sound.h: interface for the CSoundIn class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. /*
  5.    
  6.     This program is Copyright  Developped by Yannick Sustrac
  7.                    yannstrc@mail.dotcom.fr
  8.         http://www.mygale.org/~yannstrc/
  9.  
  10. This program is free software; you can redistribute it and/or modify it under the terms
  11. of the GNU General Public License as published by the Free Software Foundation; either
  12. version 2 of the License, or (at your option) any later version.
  13. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  14. without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. See the GNU General Public License for more details.
  16. You should have received a copy of the GNU General Public License along with this program;
  17. if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19. //////////////////////////////////////////////////////////////////////////////////////////    
  20. #if !defined(AFX_SOUND_H__69C928C4_1F19_11D2_8045_30460BC10000__INCLUDED_)
  21. #define AFX_SOUND_H__69C928C4_1F19_11D2_8045_30460BC10000__INCLUDED_
  22. #if _MSC_VER >= 1000
  23. #pragma once
  24. #endif // _MSC_VER >= 1000
  25. #include <mmsystem.h>
  26. #define MAX_SAMPLES 1024   //>>>>>>>> must also be defined in CFft
  27. #define MAX_VOIE 2
  28. #define MAX_SIZE_SAMPLES  1  // WORD
  29. #define MAX_SIZE_INPUT_BUFFER   MAX_SAMPLES*MAX_VOIE*MAX_SIZE_SAMPLES 
  30. #define DEFAULT_CAL_OFFSET -395 // >>>>> depends of you sound card
  31. #define DEFAULT_CAL_GAIN   1.0
  32. class CSoundIn  
  33. {
  34. public:
  35. // used for int FFT
  36. SHORT  InputBuffer[MAX_SIZE_INPUT_BUFFER];
  37. WAVEINCAPS m_WaveInDevCaps;
  38.     HWAVEIN m_WaveIn;
  39. WAVEHDR m_WaveHeader;
  40.     WAVEFORMATEX m_WaveFormat;
  41. short m_CalOffset;
  42. double m_CalGain;
  43. HANDLE m_WaveInEvent;
  44. CWinThread * m_WaveInThread;
  45. BOOL m_TerminateThread;
  46. UINT m_WaveInSampleRate;
  47. int m_NbMaxSamples;
  48. UINT m_SizeRecord;
  49. WORD  m_Toggle; /*0 or 1 according the buffer currently loaded*/
  50. public :
  51. void StartMic();
  52. void StopMic();
  53. void CloseMic();
  54. void AddBuffer();
  55. public :
  56. virtual void RazBuffers();
  57.     virtual void ComputeSamples(SHORT *);  // calibrate the samples for the basse class 
  58. // this function is overloaded by the parent
  59. // it need to call this function first to calibrate them
  60. //////////////////////////////////////////////////////
  61. // functions members
  62. MMRESULT OpenMic();
  63. void WaveInitFormat(   WORD    nCh, // number of channels (mono, stereo)
  64. DWORD   nSampleRate, // sample rate
  65. WORD    BitsPerSample);
  66. //void CALLBACK waveInProc( HWAVEIN hwi,  UINT uMsg,   DWORD dwInstance,   DWORD dwParam1, DWORD dwParam2 );
  67. CSoundIn();
  68. virtual ~CSoundIn();
  69. };
  70. // global Thread procedure 
  71. UINT WaveInThreadProc( LPVOID pParam);
  72. #endif