Re: Как взять звук со звуковой карты
От: retalik www.airbandits.com/
Дата: 25.12.01 08:29
Оценка:
Здравствуйте vl80, Вы писали:

V>Есть такая задача — необходимо разложить звук, выходящий со звуковой карты, в спектр.

V>Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
А зачем тебе знать, в каком виде звук выходит со звуковой карты?
А входит он (для программиста) почти всегда в виде PCM (Pulse Code Modulation). Ты при захвате аудио задаешь частоту дискретизации (11, 22, 44, 48 кГц), число каналов (1/2 — моно/стерео) и размер сэмпла (8, 12, 16, 20, 24 бит). Звуковая аппаратура обеспечит преобразование входящего (как правило, аналогового) сигнала в требуемый формат. В результате ты получишь буфер, заполненный, к примеру, 16-битными (размер сэмпла) числами. Каждое число — это результат измерения амплитуды (громкости) сигнала в единицу времени, например, в 1/44100 секунды (частота дискретизации). Если каналов больше 1, то сэмплы для соответствующих каналов чередуются.

Это все теория (по поводу формата звука), а захватить звук для дальнейшей обработки можно средствами WaveInput (см. MSDN).

V>Где найти документацию по этому, возможно ли это сделать на DirectSound?

Можно и на Direct Sound. Смотреть в сторону IDirectSoundCapture, IDirectSoundCaptureBuffer. Чисто субъективно — WaveInput проще, хотя... кому как. Воспроизводить звук, напротив, мне проще через DirectSound

Потом ты спрашиваешь про разложение в спектр. Не знаю, есть ли для этого средства в каком-либо DirectShow. Но рабочий подход — это использовать Fast Fourier Transform (FFT). Исходники у меня где-то были, если нужно — пиши.
Успехов,
Виталий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.