elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  c++ winapi microfono
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: c++ winapi microfono  (Leído 1,962 veces)
shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
c++ winapi microfono
« en: 16 Abril 2013, 01:59 am »

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.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalencia de función WINAPI unsigned int WINAPI myRun en Windows con Ubuntu
Programación C/C++
bertamax 2 3,112 Último mensaje 7 Agosto 2010, 16:27 pm
por bertamax
Problemas con WinApi
Programación C/C++
Nobody12 0 3,134 Último mensaje 10 Enero 2011, 21:47 pm
por Nobody12
Problema con WINAPI
Programación C/C++
..:ALT3RD:.. 7 3,763 Último mensaje 26 Agosto 2011, 21:35 pm
por Queta
winsock + winapi en C
Programación C/C++
bdoX 2 2,615 Último mensaje 10 Diciembre 2011, 18:40 pm
por bdoX
c++ winapi menus
Programación C/C++
Kenji-chan 0 2,000 Último mensaje 2 Febrero 2017, 22:32 pm
por Kenji-chan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines