Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 24.12.01 17:05
Оценка:
Есть такая задача — необходимо разложить звук, выходящий со звуковой карты, в спектр.
Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
Где найти документацию по этому, возможно ли это сделать на DirectSound?
__________________
per aspera ad astra
Re: Как взять звук со звуковой карты
От: KoraK Россия http:\\none.ru
Дата: 24.12.01 17:27
Оценка:
Здравствуйте vl80, Вы писали:

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

V>Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
V>Где найти документацию по этому, возможно ли это сделать на DirectSound?

Легко можно сделать в DX8 так система фильтров — посмотри архив на сайте www.programme.ru
Re[2]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 24.12.01 18:06
Оценка:
Здравствуйте KoraK, Вы писали:

KK>Здравствуйте vl80, Вы писали:


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

V>>Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
V>>Где найти документацию по этому, возможно ли это сделать на DirectSound?

KK>Легко можно сделать в DX8 так система фильтров — посмотри архив на сайте www.programme.ru


Можно по-подробнее, сайто-то конечно хороший, только по DirectSound и DirectShow выложена только одна статья (или не так смотрел?).

Вообще, что использовать-то: DirectSound аль DirectShow.
__________________
per aspera ad astra
Re[3]: Как взять звук со звуковой карты
От: KoraK Россия http:\\none.ru
Дата: 25.12.01 07:51
Оценка:
Здравствуйте vl80, Вы писали:

V>Здравствуйте KoraK, Вы писали:


KK>>Здравствуйте vl80, Вы писали:


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

V>>>Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
V>>>Где найти документацию по этому, возможно ли это сделать на DirectSound?

KK>>Легко можно сделать в DX8 так система фильтров — посмотри архив на сайте www.programme.ru


V>Можно по-подробнее, сайто-то конечно хороший, только по DirectSound и DirectShow выложена только одна статья (или не так смотрел?).


V>Вообще, что использовать-то: DirectSound аль DirectShow.

Это сайт журнала ты это наверно поянял. К сожелению там есть тексты не всех статей ...
попробой еще тут — мне было интересно только 3D но назвяние сайта обязывает на более широкую тематику:
[link]http://www.vvsu.ru/dkcsc/dxgp/[/link]
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). Исходники у меня где-то были, если нужно — пиши.
Успехов,
Виталий.
Re[2]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 25.12.01 08:34
Оценка:
Здравствуйте retalik, Вы писали:

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


Да пришли на e-mail vl80@bk.ru (буду очень благодарен)
__________________
per aspera ad astra
Re[3]: Как взять звук со звуковой карты
От: retalik www.airbandits.com/
Дата: 25.12.01 10:01
Оценка:
Здравствуйте vl80, Вы писали:

V>Здравствуйте retalik, Вы писали:


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


V>Да пришли на e-mail vl80@bk.ru (буду очень благодарен)


Навалял тестовую программку, послал мылом.

Если необходим пример программы аудиозахвата, то предлагаю сделку. Я приношу рабочий пример для WaveInput (как раз недавно написал), а ты вставляешь туда алгоритм Фурье-преобразования и отображения звука в виде спектра (как в WinAmp). На основе этого получается и выкладывается на сайт Q&A "Работа с потоковым аудио и цифровая обработка звука". Все пьют шампанское Ну как?
Успехов,
Виталий.
Re[4]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 25.12.01 11:44
Оценка:
Здравствуйте retalik, Вы писали:

R>Если необходим пример программы аудиозахвата, то предлагаю сделку. Я приношу рабочий пример для WaveInput (как раз недавно написал), а ты вставляешь туда алгоритм Фурье-преобразования и отображения звука в виде спектра (как в WinAmp). На основе этого получается и выкладывается на сайт Q&A "Работа с потоковым аудио и цифровая обработка звука". Все пьют шампанское Ну как?


Согласен.
__________________
per aspera ad astra
Re[5]: Как взять звук со звуковой карты
От: retalik www.airbandits.com/
Дата: 25.12.01 11:59
Оценка:
Здравствуйте vl80, Вы писали:

R>>Если необходим пример программы аудиозахвата, то предлагаю сделку. Я приношу рабочий пример для WaveInput (как раз недавно написал), а ты вставляешь туда алгоритм Фурье-преобразования и отображения звука в виде спектра (как в WinAmp). На основе этого получается и выкладывается на сайт Q&A "Работа с потоковым аудио и цифровая обработка звука". Все пьют шампанское Ну как?


V>Согласен.


Хорошо. Завтра приношу исходник, дальше общаемся по мылу.
Успехов,
Виталий.
Re: Как взять звук со звуковой карты
От: Lostar Россия  
Дата: 25.12.01 13:10
Оценка:
Здравствуйте vl80, Вы писали:

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

V>Поскажите, пожайлуста, как взять звук, в каком виде он вообще выходит со звуковой карты( в виде частот и аплитуд, или еще как-то).
V>Где найти документацию по этому, возможно ли это сделать на DirectSound?

Моно и через DirectShow
Однако все фильтры источники звука (по крайне мере все какие я видел) предоставляют только один выходной пин ~CAPTURE посему это может подойти не для всех случаев, к примеру это может быть неприемлимо к реалтайму (конечно это надо проверять для конкретной задачи) так как возможна небольшая задержка.
Ну а если все устраивает то собираешь следующую цепочку: Live Source(ну например SBLive) --capture pin-->Sample Grabber
подвешиваешь к Sample Grabber-у свой callback и в callback-е обрабатываешь полученные данные, ну и при соединении можно конечно насторить частоту дискретизации, размер и количество буферов.
Вообще-то все вроде рекомендуют после SampleGrabber-а подсоединить NullRender, но опыт показывает что енто не обязательно.
С уважением, Николай.
Re[2]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 25.12.01 20:57
Оценка:
Здравствуйте Lostar, Вы писали:

L>Моно и через DirectShow

L>Однако все фильтры источники звука (по крайне мере все какие я видел) предоставляют только один выходной пин ~CAPTURE посему это может подойти не для всех случаев, к примеру это может быть неприемлимо к реалтайму (конечно это надо проверять для конкретной задачи) так как возможна небольшая задержка.
L>Ну а если все устраивает то собираешь следующую цепочку: Live Source(ну например SBLive) --capture pin-->Sample Grabber
L>подвешиваешь к Sample Grabber-у свой callback и в callback-е обрабатываешь полученные данные, ну и при соединении можно конечно насторить частоту дискретизации, размер и количество буферов.
L>Вообще-то все вроде рекомендуют после SampleGrabber-а подсоединить NullRender, но опыт показывает что енто не обязательно.

Я наверно вопрос несколько неверно сформулировал, хотелось бы узнать можно захватить звук, который в данный момент играется и разложить его в спектор, то есть запустили например winamp, он играет там какую-нибудь mp3 или wav, в общем без разницы, а мы параллельно строим спектор сигнала.
__________________
per aspera ad astra
Re[3]: Как взять звук со звуковой карты
От: Lostar Россия  
Дата: 26.12.01 08:37
Оценка:
Здравствуйте vl80, Вы писали:

V>Я наверно вопрос несколько неверно сформулировал, хотелось бы узнать можно захватить звук, который в данный момент играется и разложить его в спектор, то есть запустили например winamp, он играет там какую-нибудь mp3 или wav, в общем без разницы, а мы параллельно строим спектор сигнала.


Ну тогда DirectShow вряд ли пригодится.
С уважением, Николай.
Re[3]: Как взять звук со звуковой карты
От: Аноним  
Дата: 11.01.02 08:29
Оценка:
Здравствуйте vl80, Вы писали:


V>Я наверно вопрос несколько неверно сформулировал, хотелось бы узнать можно захватить звук, который в данный момент играется и разложить его в спектор, то есть запустили например winamp, он играет там какую-нибудь mp3 или wav, в общем без разницы, а мы параллельно строим спектор сигнала.


Но вообще спектр это разложение сигнала заданного в виде A0,A1,...AN и после разложения получаем частоты f0,f1,...,fN, то есть нет спекра в точке

А зачем Вам вообще нужен спектр?
Re[4]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 11.01.02 17:59
Оценка:
Здравствуйте Аноним, Вы писали:

А>Но вообще спектр это разложение сигнала заданного в виде A0,A1,...AN и после разложения получаем частоты f0,f1,...,fN, то есть нет спекра в точке


При частотах f0,f1,...,fN есть амплитуды — это и есть спектр.

А>А зачем Вам вообще нужен спектр?


Ну сделать что-то подобное spectrum analyzer в winamp'е.
__________________
per aspera ad astra
Re[5]: Как взять звук со звуковой карты
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 17.01.02 12:43
Оценка:
Здравствуйте vl80, Вы писали:

R>>Если необходим пример программы аудиозахвата, то предлагаю сделку. Я приношу рабочий пример для WaveInput (как раз недавно написал), а ты вставляешь туда алгоритм Фурье-преобразования и отображения звука в виде спектра (как в WinAmp). На основе этого получается и выкладывается на сайт Q&A "Работа с потоковым аудио и цифровая обработка звука". Все пьют шампанское Ну как?


V>Согласен.


как там работа, движется? Контрол для отображения спектра нашли где-то готовый, или сами будете делать?
Re[6]: Как взять звук со звуковой карты
От: retalik www.airbandits.com/
Дата: 17.01.02 12:54
Оценка:
Здравствуйте Odi$$ey, Вы писали:
O$>как там работа, движется? Контрол для отображения спектра нашли где-то готовый, или сами будете делать?
Хороший вопрос. Получив исходники и задав пару вопросов мылом, товарищ пропал.
Ау, vl80! Работает Фурье или как? Сдал сессию-то?
Успехов,
Виталий.
Re[7]: Как взять звук со звуковой карты
От: vl80 Россия  
Дата: 17.01.02 18:18
Оценка:
Здравствуйте retalik, Вы писали:

R>Здравствуйте Odi$$ey, Вы писали:

O$>>как там работа, движется? Контрол для отображения спектра нашли где-то готовый, или сами будете делать?
R>Хороший вопрос. Получив исходники и задав пару вопросов мылом, товарищ пропал.
R>Ау, vl80! Работает Фурье или как? Сдал сессию-то?

Не пропал товарищ, не пропал. Завтра последний экзамен.
В общем-то, спектр строится, но показывать такое не хочется.
На выходных начну переделывать. Я сильно извиняюсь, но так получилось.
__________________
per aspera ad astra
Re[4]: Как взять звук со звуковой карты
От: pioner134  
Дата: 27.02.05 15:33
Оценка:
Здравствуйте, retalik, Вы писали:

R>Здравствуйте vl80, Вы писали:


V>>Здравствуйте retalik, Вы писали:


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


V>>Да пришли на e-mail vl80@bk.ru (буду очень благодарен)


R>Навалял тестовую программку, послал мылом.


R>Если необходим пример программы аудиозахвата, то предлагаю сделку. Я приношу рабочий пример для WaveInput (как раз недавно написал), а ты вставляешь туда алгоритм Фурье-преобразования и отображения звука в виде спектра (как в WinAmp). На основе этого получается и выкладывается на сайт Q&A "Работа с потоковым аудио и цифровая обработка звука". Все пьют шампанское Ну как?



Пришли пожайлуста, пример обработки звука с БПФ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.