#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "Winmm.lib")
void IniciarGrabacion() {
// Definir la estructura WAVEFORMATEX para la grabación
WAVEFORMATEX formato;
formato.wFormatTag = WAVE_FORMAT_PCM;
formato.nChannels = 1; // Mono
formato.nSamplesPerSec = 44100; // Frecuencia de muestreo
formato.nAvgBytesPerSec = formato.nSamplesPerSec * 2; // 16 bits por muestra
formato.nBlockAlign = 2;
formato.wBitsPerSample = 16;
// Abrir el dispositivo de grabación
HWAVEIN hWaveIn;
waveInOpen(&hWaveIn, WAVE_MAPPER, &formato, 0, 0, CALLBACK_NULL);
// Configurar el buffer de entrada
const int bufferSize = 4096;
char buffer[bufferSize];
WAVEHDR waveHdr = { 0 };
waveHdr.lpData = buffer;
waveHdr.dwBufferLength = bufferSize;
// Preparar el buffer para la grabación
waveInPrepareHeader(hWaveIn, &waveHdr, sizeof(WAVEHDR));
// Iniciar la grabación
waveInAddBuffer(hWaveIn, &waveHdr, sizeof(WAVEHDR));
waveInStart(hWaveIn);
// Esperar hasta que se complete la grabación (puedes implementar un mecanismo de temporización o evento)
Sleep(5000);
// Detener y limpiar
waveInStop(hWaveIn);
waveInUnprepareHeader(hWaveIn, &waveHdr, sizeof(WAVEHDR));
waveInClose(hWaveIn);
}
int main() {
IniciarGrabacion();
return 0;
}