Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Захват звукового вывода   Найти похожие ветки 

 
Ajax ©   (2005-10-11 13:00) [0]

Привет. Мне нужно перехватывать и анализировать проигрываемый в данный момент на компьютере звук. Можно-ли это реализовать иначе чем запись с выхода микшера? И если нет, то как добится соответствия воспроизводимого звука и записываемого с выхода микшера? Потому как при записи сигнал сильно отличается, особенно в области верхних частот.

Спасибо.


 
Digitman ©   (2005-10-11 13:54) [1]


> Можно-ли это реализовать иначе чем запись с выхода микшера?


пожалуй, нельзя, если конкретная карта не подразумевает и неподдерживает иных (нестандартных для WinMMediaAPI) интерфейсов и механизмов.


> как добится соответствия воспроизводимого звука и записываемого
> с выхода микшера?


следует установить одинаковые параметры каналов записи и воспроизведения (битрейт, разрешение и т.д. и т.п.)


 
Ajax ©   (2005-10-12 00:20) [2]

>следует установить одинаковые параметры каналов записи и воспроизведения (битрейт, разрешение и т.д. и т.п.)

Вроде бы все параметры записи правильно выставляю, но получить с выхода микшера сигнал идентичный сигналу на входе не удалось. Для опытов сгенерировал файл с чистым тоном килогерц эдак в 20 и пробовал его так и сяк записывать. Результат отвратительный. Собственно опыт можно провести даже без всякого программирования. Имея в руках какой-либо звуковой редактор, можно генерировать, воспроизводить и записывать звук одинакового формата и лицезреть получаемые различия.


 
Digitman ©   (2005-10-12 08:22) [3]


> Ajax ©   (12.10.05 00:20) [2]


еще раз - многое (если не все) зависит от характеристик и возможностей конкретной аудиокарты.

ты о какой конкретно ведешь речь ?


 
Ajax ©   (2005-10-12 21:40) [4]

Ни о какой конкретно. Скажем так, о аудиокартах вообще. Чтобы моя программа могла работать на любой машине с какой-либо звукашкой и установленной Windows.

Мне тут все уши прожужжали про захват звука с помощью драйверов (уже написанных). А конкретно информацию найти не могу...


 
Ajax ©   (2005-10-12 21:45) [5]

Если не ошибаюсь, нечто подобное делает Total Recorder.


 
Digitman ©   (2005-10-13 10:53) [6]


> Чтобы моя программа могла работать на любой машине с какой-
> либо звукашкой и установленной Windows


универсальности достигнуть не удастся : карта карте - рознь.

простой пример - карта может не поддерживать полнодуплексный режим (т.е. запись и воспроизведение одновременно), и в этом случае твоя задача попросту нерешаема, как не решит ее в этом случае и Total Recorder

или другой пример - карта может не поддерживать запись с микшера в режиме What U Hear


 
Digitman ©   (2005-10-13 10:51) [7]


> Чтобы моя программа могла работать на любой машине с какой-
> либо звукашкой и установленной Windows


универсальности достигнуть не удастся : карта карте - рознь.

простой пример - карта может не поддерживать полнодуплексный режим (т.е. запись и воспроизведение одновременно), и в этом случае твоя задача попросту нерешаема, как не решит ее в этом случае и Total Recorder

или другой пример - карта может не поддерживать запись с микшера в режиме What U Hear


 
Ajax ©   (2005-10-13 23:52) [8]

>карта может не поддерживать полнодуплексный режим (т.е. запись и
>воспроизведение одновременно), и в этом случае твоя задача попросту
>нерешаема, как не решит ее в этом случае и Total Recorder


Не согласен. IMHO TotalRecorder делает следующее. Он устанавливает в систему свои дрова некоего виртуального звукового устройства. На это устройство направляется ввод и вывод. Оно полностью перехватывает звуковой поток, делает что хочет и отправляет на дрова реальной звукашки.

>или другой пример - карта может не поддерживать запись с микшера в
>режиме What U Hear


Насколько я понимаю, эта проблема решается аналогично первой.

Все вышеозвученное естественно IMHO и если я неправ, прошу поправить.


 
Digitman ©   (2005-10-14 10:00) [9]

В своем вопросе ты ведешь речь о перехвате ВСЕГО звука, которые "издает" карта.

Этот ВЕСЬ звук есть результат аппаратного микширования картой различных аудиопотоков, среди которых вполне м.б. аудиопоток, генерируемый, например, встроенным в карту MIDI-синтезатором.

Никакой TotalRecorder и никакие драйверы не смогут внедриться в аппаратный процесс синтеза, происходящий на борту карты.

Все что может  TotalRecorder со своими драйверами виртуальных аудиоустройств - это стандартным для медиаподсистемы ОС образом подключиться к wave-устройствам ввода/вывода, ассоциированным с картой (см. MSMMAPI waveIn/Out-ф-ции), после чего возможности чтения/записи тех или иных источников аудиоданных определяются только возможностями встроенного в карту микшера, который собственно и определяет (в соответствии с настройками), потоки от каких источников (Wave, MIDI, Line, Aux, TAD и т.д. и т.п.) и в каких комбинациях он будет "месить".

Т.е. если, например, в системе работают две разных программы, одна из которых работает с MIDI-синтезатором карты, а другая проигрывает в это время wav-файл, и при этом в микшере записи установлен только один из этих источников, а не оба одновременно (микшер записи позволяет указать только один источник для записи), то слышать ты будешь нормальную "смесь" потоков из wav-файла и синтезированного midi-синтезатором карты потока, но записан при этом будет либо тот либо другой поток, но не оба одновременно ... ряд же карт , микшер которых поддерживает источник записи "What U Hear" (запись всего того, что ты реально слышишь в данный момент, т.е. то что тебе и требуется судя по вопросу), позволят записать именно готовую "смесь" из более чем одного  источника.

А если карта не поддерживает полный дуплекс, то доступ к ее записывающим ф-циям вообще запрещен, пока осуществляется доступ к ее wave-воспроизводящим ф-циям, и наоборот .. т.е. в этом случае либо ты запишешь либо полную тишину, либо запишешь только синтезируемый midi-синтезатором карты поток, либо вообще ничего не сможешь записать (если в этот момент карта воспроизводит wave-источник)

Кр.того, соврем.карты часто реализуют на своем борту DSP-процессорные ф-ции (эквалайзер и пр.), доступ к которым со стороны MSMMAPI м.б. попросту не предусмотрен за отсутствием единого стандарта на интерфейсы таких функц.устройств в составах карт ... управление такими устр-вами, как правило, осуществляется минуя MSMMAPI (прикладная программа в таких случаях взаимодействует непосредственно с драйвером соотв.подсистемы карты) ... DSP-процессор же в зависимости от возможностей карты и микшера в ее составе может выполнять пре- и/или пост-обработку тех или иных потоков перед тем как потоки поступают "на выход", поэтому эквивалентность ампл.-част. и спектральных характеристик воспроизводимого и одновременно записываемого сигналов определяется в этом случае в т.ч. и в первую очередь тек.установками DSP-процессора.


 
Ajax ©   (2005-10-17 19:48) [10]

Спасибо! Я кажется даже понял :-)
Переформулирую вопрос. Как можно перехватить звук, отправляемый программами на воспроизведение? Например для Winamp можно написать соответствующий плагин, для каких-то программ тоже. Но хотелось бы отсутствия привязки к конкретному плееру. MIDI звук перехватывать не нужно.

PS: По всей видимости, ответ на этот вопрос дан уже в [1] и сделать это иначе как записью с выхода микшера нельзя :-(



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1141120783
VitV
2006-02-28 12:59
2006.03.19
Interbase. Путь к рисунку.


2-1141364726
rosl
2006-03-03 08:45
2006.03.19
фильтр без регистра


2-1141152193
tyo
2006-02-28 21:43
2006.03.19
мелкий/крупный шрифт


15-1140716512
5*5=25
2006-02-23 20:41
2006.03.19
кто учился НЕ на программиста


2-1141060133
myself
2006-02-27 20:08
2006.03.19
Delphi 16-bit complile