Foros del Web » Programación para mayores de 30 ;) » C/C++ »

c++ winapi microfono

Estas en el tema de c++ winapi microfono en el foro de C/C++ en Foros del Web. Hola, estuve buscando por el foro pero no encuentro lo que busco. Tengo un proyecto donde obtengo el audio del microfono y luego lo reproduzco: ...
  #1 (permalink)  
Antiguo 15/04/2013, 19:35
 
Fecha de Ingreso: julio-2010
Mensajes: 34
Antigüedad: 12 años, 4 meses
Puntos: 0
c++ winapi microfono

Hola, estuve buscando por el foro pero no encuentro lo que busco. Tengo un proyecto donde obtengo el audio del microfono y luego lo reproduzco:

Código:
const int NUMPTS = 44100 * 1;
	int sampleRate = 44100;
	short unsigned int waveIn[NUMPTS];

    for( int i = 0; i < NUMPTS; i++ )
    {
        waveIn[i] = 0;
    }

	HWAVEIN hWaveIn;
	WAVEHDR WaveInHdr;
	HWAVEOUT hWaveOut;

	WAVEFORMATEX pFormat;
	pFormat.wFormatTag = WAVE_FORMAT_PCM;
	pFormat.nChannels = 1;
	pFormat.nSamplesPerSec = sampleRate;
	pFormat.nAvgBytesPerSec = 2 * sampleRate;
	pFormat.nBlockAlign = 2;
	pFormat.wBitsPerSample = 16;
	pFormat.cbSize = 0;

	waveInOpen(&hWaveIn, WAVE_MAPPER, &pFormat, 0, 0, WAVE_FORMAT_DIRECT);

	WaveInHdr.lpData = (LPSTR)&waveIn;
	WaveInHdr.dwBufferLength = 2 * NUMPTS;
	WaveInHdr.dwBytesRecorded = 0;
	WaveInHdr.dwUser = 0;
	WaveInHdr.dwFlags = 0;
	WaveInHdr.dwLoops = 0;
	waveInPrepareHeader(hWaveIn, &WaveInHdr, sizeof(WAVEHDR));

	waveInAddBuffer(hWaveIn, &WaveInHdr, sizeof(WAVEHDR));

	waveInStart(hWaveIn);

	cout << "Recording..." << endl;
	Sleep((NUMPTS/sampleRate) * 1000);

    FILE *audio = fopen("audio.txt", "w+");
    for( int i = 0; i < NUMPTS; i++ )
    {
        fprintf(audio, "%d\n", (int)waveIn[i] );
    }
    fclose(audio);

	//cout << "Playing..." << endl;

	//if(waveOutOpen(&hWaveOut, WAVE_MAPPER, &pFormat, 0, 0, WAVE_FORMAT_DIRECT))
	//{
	//	MessageBoxA(NULL, "Failed to replay", NULL, MB_OK | MB_ICONEXCLAMATION );
	//}

    //waveOutSetVolume(hWaveOut, 0xFFFF);
    //waveOutWrite(hWaveOut, &WaveInHdr, sizeof(WaveInHdr));
	//Sleep((NUMPTS/sampleRate) * 1000);

	//waveOutUnprepareHeader(hWaveOut, &WaveInHdr, sizeof(WAVEHDR));
	waveInUnprepareHeader(hWaveIn, &WaveInHdr, sizeof(WAVEHDR));
	waveInClose(hWaveIn);
	//waveOutClose(hWaveOut);
Ahora mismo lo tengo para que lo guarde en un txt el sonido entrante durante 1 segundo, quisiera tratar los números, para hacer un oscilador del sonido, saber cuando es fuerte o debil el sonido.

Como son 2 bytes, es de 0 a 65535, pero no se cuando es bajo y cuando es fuerte o como funciona este sistema... Quisiera poder distinguirlos para hacer una media y hacer un oscilador del audio... si pudierais ayudarme me seria de gran ayuda.

Etiquetas: funcion, int, microfono, winapi
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:33.