Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.014 c
2-1141320061
Alex7
2006-03-02 20:21
2006.03.19
Неисправность


15-1141096201
SkyRanger
2006-02-28 06:10
2006.03.19
Рекламма


3-1138614007
Barsky
2006-01-30 12:40
2006.03.19
Чтение Number из файла Paradox (*.db)


2-1141059892
anonymous-
2006-02-27 20:04
2006.03.19
Мерцание формы


15-1140326326
delphi-oracle
2006-02-19 08:18
2006.03.19
Все, кто че знает по Messages, поделитесь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский