SOUND.H
上传用户:huifengb
上传日期:2007-12-27
资源大小:334k
文件大小: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 8192   //>>>>>>>> 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 CSound
  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. /////////////////////////////////
  42. /////////////////////////////////
  43. WAVEOUTCAPS m_WaveOutDevCaps;
  44.     HWAVEOUT m_WaveOut;
  45. /////////////////////////////////
  46. /////////////////////////////////
  47. short m_CalOffset;
  48. double m_CalGain;
  49. short *m_psSoundData;
  50. HANDLE m_WaveEvent;
  51. CWinThread * m_WaveInThread;
  52. BOOL m_TerminateThread;
  53. UINT m_WaveInSampleRate;
  54. int m_NbMaxSamples;
  55. UINT m_SizeRecord;
  56. WORD  m_Toggle; /*0 or 1 according the buffer currently loaded*/
  57. BOOL bRec;
  58. public :
  59. void StartMic();
  60. void StopMic();
  61. void CloseMic();
  62. void AddBuffer();
  63. void RecSoundData();
  64. void SetMaxSamples(int nMaxSamples);
  65. void StartOutput();
  66. void StopOutput();
  67. void CloseOutput();
  68. void SetRec();
  69. public :
  70. virtual void RazBuffers();
  71.     virtual void ComputeSamples(SHORT *);  // calibrate the samples for the basse class 
  72. // this function is overloaded by the parent
  73. // it need to call this function first to calibrate them
  74. //////////////////////////////////////////////////////
  75. // functions members
  76. MMRESULT OpenMic(int nChannel, int nSamplesPerSec, int nBitPerPoint, int nMaxSamples);
  77. void WaveInitFormat(   WORD    nCh, // number of channels (mono, stereo)
  78. DWORD   nSampleRate, // sample rate
  79. WORD    BitsPerSample);
  80. //void CALLBACK waveInProc( HWAVEIN hwi,  UINT uMsg,   DWORD dwInstance,   DWORD dwParam1, DWORD dwParam2 );
  81. CSound();
  82. virtual ~CSound();
  83. };
  84. // global Thread procedure 
  85. UINT WaveThreadProc( LPVOID pParam);
  86. #endif