Scarica il sorgente database/2002-win_audio_v0.01.01.h
  1. //WIN Audio Class
  2. //by mamo139
  3. //dipendenze: windows.h
  4.  
  5. #ifndef _WIN_AUDIO_H_
  6. #define _WIN_AUDIO_H_ 1
  7.  
  8. #define WIN_AUDIO_CLASS_VERSION "0.01.01"
  9.  
  10. #include <stdio.h>
  11. #include <tchar.h>
  12. #include <math.h>
  13. #include <iostream>
  14. #include <windows.h>
  15. #pragma comment(lib,"Winmm.lib")
  16.  
  17. #define WA_CAMPIONI_PER_SECONDO 8000
  18. #define WA_BIT_PER_CAMPIONE 8
  19.  
  20.  
  21. class win_audio {
  22.  
  23. private:
  24. int campioni_per_secondo;
  25. int bit_per_campione;
  26. int canali;
  27.  
  28. int recording_event;
  29. int playing_event;
  30.  
  31. HWAVEIN input_device;
  32. WAVEHDR wave_in_struct;
  33.  
  34. HWAVEOUT output_device;
  35. WAVEHDR wave_out_struct;
  36.  
  37. char *audio_buffer;
  38. long audio_buffer_size;
  39. int audio_buffer_setted;
  40.  
  41. int err, err_size;
  42. char *err_buffer;
  43.  
  44. public:
  45. win_audio();
  46. ~win_audio();
  47.  
  48. //registrare da microfono a buffer
  49. int input_open_device(); //impostiamo dispositivo di registrazione
  50. int input_set_buffer(long lBuffer); //settiamo il buffer audio_buffer
  51. int input_record(); //iniziamo la registrazione
  52. int input_close_device(); //chiudiamo il dispositivo di registrazione
  53.  
  54. //riproduzione di un buffer
  55. int output_open_device(); //impostiamo dispositivo di riproduzione
  56. int output_set_buffer(char *buffer, long lBuffer); //settiamo il buffer da riprodurre
  57. int output_play(); //iniziamo la riproduzione
  58. int output_close_device(); //chiudiamo dispositivo di riproduzione
  59.  
  60. //altri metodi
  61. char * get_audio_buffer();
  62. long get_audio_buffer_size();
  63.  
  64. //callbacks
  65. friend void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
  66. friend void CALLBACK waveInProc(HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
  67.  
  68. };
  69.  
  70.  
  71. #endif