//WIN Audio Class
//by mamo139
//dipendenze: windows.h
#ifndef _WIN_AUDIO_H_
#define _WIN_AUDIO_H_ 1
#define WIN_AUDIO_CLASS_VERSION "0.01.01"
#include <stdio.h>
#include <tchar.h>
#include <math.h>
#include <iostream>
#include <windows.h>
#pragma comment(lib,"Winmm.lib")
#define WA_CAMPIONI_PER_SECONDO 8000
#define WA_BIT_PER_CAMPIONE 8
class win_audio {
private:
int campioni_per_secondo;
int bit_per_campione;
int canali;
int recording_event;
int playing_event;
HWAVEIN input_device;
WAVEHDR wave_in_struct;
HWAVEOUT output_device;
WAVEHDR wave_out_struct;
char *audio_buffer;
long audio_buffer_size;
int audio_buffer_setted;
int err, err_size;
char *err_buffer;
public:
win_audio();
~win_audio();
//registrare da microfono a buffer
int input_open_device(); //impostiamo dispositivo di registrazione
int input_set_buffer(long lBuffer); //settiamo il buffer audio_buffer
int input_record(); //iniziamo la registrazione
int input_close_device(); //chiudiamo il dispositivo di registrazione
//riproduzione di un buffer
int output_open_device(); //impostiamo dispositivo di riproduzione
int output_set_buffer(char *buffer, long lBuffer); //settiamo il buffer da riprodurre
int output_play(); //iniziamo la riproduzione
int output_close_device(); //chiudiamo dispositivo di riproduzione
//altri metodi
char * get_audio_buffer();
long get_audio_buffer_size();
//callbacks
friend void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
friend void CALLBACK waveInProc(HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
};
#endif