Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C/C++: запись звука

Кирилл Зеленкин Профи (518), на голосовании 4 месяца назад
Не с микрофона, а всего того звука, который воспроизводится на компьютере, помещение звука в буфер маленькими кусочками (одноканальное, можно восьмибитное), для последующей обработки.

Я нашел такой кусок кода, не пойму что он делает:

char buf[44000] = "";

void kkk(){
HWAVEIN in;

WAVEHDR wavehdr;
WAVEFORMATEX Format;

Format.wFormatTag = WAVE_FORMAT_PCM;
Format.wBitsPerSample = 8;
Format.nChannels = 1;
Format.nSamplesPerSec = 44000;

waveInOpen(&in, WAVE_MAPPER, &Format, NULL, 0L, CALLBACK_WINDOW);

wavehdr.lpData = buf;
wavehdr.dwBufferLength = 44000;
wavehdr.dwBytesRecorded = 0;
wavehdr.dwUser = 0;
wavehdr.dwFlags = 0;
wavehdr.dwLoops = 0;
wavehdr.lpNext = 0;
wavehdr.reserved = 0;

waveInPrepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInAddBuffer(in, &wavehdr, sizeof(WAVEHDR));
waveInStart(in);
Sleep(1000);
waveInReset(in);
waveInUnprepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInClose(in);
};

Он пишет звук с микрофона или весь звук? И работает ли вообще?
Голосование за лучший ответ
/bin/laden Искусственный Интеллект (113101) 5 месяцев назад
пишет 1 сек с дефолтного устройства записи.
Кирилл ЗеленкинПрофи (518) 5 месяцев назад
А как сделать, что бы писал 1 сек того, что проигрывается на компьютере?
/bin/laden Искусственный Интеллект (113101) Кирилл Зеленкин, вместо WAVE_MAPPER указать номер устройства Stereo Mix, если такое присутствует.
Кирилл ЗеленкинПрофи (518) 5 месяцев назад
/bin/laden Искусственный Интеллект (113101) Кирилл Зеленкин, у тебя только одно устройство, оно же дефолтное
Кирилл ЗеленкинПрофи (518) 5 месяцев назад
Я нашел стереомикшер, но не могу понять, где написан его номер. Что вставлять в программу-то?
Похожие вопросы