Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.70.255] |
|
Сообщ.
#1
,
|
|
|
Опробованная методика:
Закольцевал (кабелем папа-папа) на карте выход --> line in. Пытаюсь одновременно записать с микрофона и line in (с помощью 'waveinopen' из Windows MultiMedia) даже из разных приложений. Поочерёдно работает. Вместе - выдает MMSYSERR_ALLOCATED (устройство уже используется). Хотя DeviceID разный - один микрофон, другой - line-in. Вопрос к знатокам DirectSound : Будет ли работать одновременная запись микрофона и line-in с его помощью? А ещё лучше: Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки? А потом я уже смешаю их с потоком из микрофона... |
Сообщ.
#2
,
|
|
|
Цитата Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки? Нет, нельзя. Вероятно( я не уверен, так как не имел счастья познакомиться с win7 близко), это можно сделать при помощи интерфейсов win7 (см. core audio). В core audio возможно управление цифровыми потоками аудио из приложений средствами ОС, что раньше решалось применением транзитных виртуальных звуковух. Цитата Пытаюсь одновременно записать с микрофона и line in (с помощью 'waveinopen' из Windows MultiMedia) даже из разных приложений. Поочерёдно работает. Вместе - выдает MMSYSERR_ALLOCATED (устройство уже используется). Хотя DeviceID разный - один микрофон, другой - line-in. Цитата Хотя DeviceID разный А откуда вы его берёте - разный? DeviceID из waveinopen, в концепции WinXP, ссылается на "цифровой выход" звукового адаптера (АЦП). В обычных адаптерах, он(АЦП) один. А "микрофон", "line-in" - аналоговые входные линии микшера. Микшер(смеситель) - смешивает входные сигналы, а его выход подключен ко входу АЦП. Микшер и АЦП - функциональные блоки звукового адаптера. Физически невозможно осуществить независимую запись сигналов с разных входов микшера в одноканальной звуковой карте. Под одноканальностью в данном случае понимается наличие на борту звуковой карты одного АЦП, с одним стереовходом. Концепция работы с аудио(и соотвественно, терминология) win7 отличается от WinXP. В Win7, микрофон и пр. линии, представлены как конечные девайсы(audio endpoint devices), но на уровне аппаратном они остались тем, чем были : входными линиями аппаратного микшера, подключенного к одноканальному АЦП. Вместе с тем, простой способ одновременно записывать микрофон и "выход" существует Запись звука с выхода звуковой карты. Хотя возможности этого способа ограничены, он "негибкий". Ну и плюс к тому попытайтесь разобраться с сore audio... |
Сообщ.
#3
,
|
|
|
Насколько знаю, обычные звучки не могут использовать два разных входа АППАРАТНО, то есть никакая винда это не исправит. А в современных ноутбуковских звучках вообще пошла мода оставлять только микрофонный вход, моно. Если есть линейный вход - можно использовать правый и левый каналы, как независимые.
Цитата maxefanov @ Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки? Это, может быть, и получится, но зачем? Наложить голос на минусовку? Но это не так делается. |
Сообщ.
#4
,
|
|
|
Prince, благодарю за развёрнутый ответ.
Действительно, у меня Win7 - поэтому, когда я получил разный DeviceID с помощью waveInGetNumDevs / waveInGetDevCaps я и подумал, что можно писать звук параллельно с микрофона и line-in... Про микшер я знал - но надеялся как-то обойтись. Придётся в требованиях к программе указать, что обязательно наличие микшера у звуковой карты. Core audio - покопаю, хотя не хотелось бы в требования добавлять "только win 7". Может совмещу как-то : типо "Или win7 - или звуковуху с микшером давайте"... Добавлено Mikle у меня не минусовка. У меня разговор двух людей. Нужно смешать то, что говорит один с тем, что говорит другой и записать в файл. Программно смешать два сэмпла - не вижу никаких проблем, главное: записать то, что говорят в микрофон, с тем, что слышно в динамиках |
Сообщ.
#5
,
|
|
|
Цитата maxefanov @ главное: записать то, что говорят в микрофон, с тем, что слышно в динамиках А то, "что слышно в динамиках", оно откуда берётся? Оно ведь воспроизводится из файла? Или, к примеру, по скайпу? Тогда можно записать только микрофон, а ПОТОМ смикшировать, в случае скайпа и т. п. есть способы кеширования. |
Сообщ.
#6
,
|
|
|
Mikle
Не обязательно скайп - я слышал, там есть API Но, к примеру, любая другая программка для общения по сети, о которой ничего не известно (в смысле, неизвестно как из неё получить звуковой поток) а она просто выдаёт звук на звуковуху (наушники, динамики) и всё. P.S. Я уже осознал ограничения - тему можно считать раскрытой (или закрытой, кому как больше нравиться), Prince, благодарю ещё раз :-) |
Сообщ.
#7
,
|
|
|
Цитата Придётся в требованиях к программе указать, что обязательно наличие микшера у звуковой карты. Ой, не надо. Такое требование безграмотное. Всё равно что потребовать для нормальной работы программы наличия чипсета на материнке. Видимо, я плохо объясняю. Микшер и так обязательная часть звуковой карты. Регулятор громкости винды как раз управляет микшером. Входы( line-in, mic, "то, что слышно", и пр. - это входы микшера. Выходы(line-out и пр. ) - выходы микшера. Сигналы(аналоговые) со входов микшера_записи смешиваются, в зависимости от настроек входов. Результирующий(суммарный) аналоговый сигнал, с выхода микшера_записи подаётся в цифровую часть звуковухи - на вход АЦП. А с выхода АЦП уже цифровой поток захватывается приложением, через любой из доступных интерфейсов(wavein, directx etc). Управление микшером програмно осуществляется при помощи API mixeropen и пр. Выход микшера записи - один. И вход АЦП соотвественно тоже один(стерео). Поэтому, вы можете записывать одновременно любую комбинацию сигналов(cумму сигналов) со входов, но на одну стереодорожку. Скачайте справочные листы на любой из аудиокодеков реалтек и посмотрите функциональную схему - увидите, как коммутируются аналоговые сигналы, какие цифровые потоки в нём гуляют. Ну а как вин7 уживается с микшером конкретной звуковухи - это отдельная песня. То можно выяснить в натуре. Как я уже сказал, в вин7 изменили в корне концепцию работы со звуком, в вин7 появились новые, свои собственные интерфейсы. А все "морально устаревшие" интерфейсы работают поверх звукового ядра win7, cо всеми вытекающими. Именно поэтому waveInGetNumDevs возвращает вам не 1/2, как было бы в winXP, а ...надцать, в зависимости от того, что звуковое ядро win7 cчитает "устройством". Какие имена устройств возвращает waveInGetDevCaps? |
Сообщ.
#8
,
|
|
|
Кстати, многие звучки позволяют микшировать сразу, то есть достаточно подать сигнал с микрофона на выход, и писать выходной сигнал, готовый микс, в Audigy называется "What U Hear".
|
Сообщ.
#9
,
|
|
|
Цитата Кстати, многие звучки позволяют микшировать сразу Как это, "кстати"? А об чем же я с самого начала толкую? Я бы сказал, все современные, во всяком случае в Sound Blaster PCI128 такая фишка как вход "wave(What U Hear)" уже есть, а эта карта не помню какого года выпуска. Позволяют, с небольшой разницей. Микшер Audigy "подрабатывает по совместительству" мультиплексором, а реалтековские микшеры ведут себя собственно как нормальные микшеры. Правда, мне почему-то всё попадаются без раздельных регулировок каналов, что неудобно. В Audigy микрофон включается в микшере воспроизведения, а пишется "What U Hear", в реалтек же можно включить "What U Hear" и "микрофон" в микшере записи(а можно настроить микшеры аналогично Audigy). В данном случае, проблема в том, что вин7 распроряжается микшером как хочет, в соотвествии со своими "взглядами" на аудиоустройства. Входы микшера она "понимает" как отдельные конечные устройства. При открытии такого устройства(например, "микрофона") средствами winmm, вин7(я так полагаю, не могу утверждать ) самостоятельно настраивает микшер, включая необходимую линию и заглушая прочие. В принципе, никто не запрещает включить все необходимые линии уже после открытия устройства, например, из управляющей программы от производителя, но и эти операции вероятно будут проводиться транзитом через интерфейсы вин7, т.е., подводных камней может быть ещё штук сорок, например, блокировка линий, если есть линии, "открытые" приложениями в качестве "устройства", подобно тому, как ТС описывает поведение waveinopen. Это ТС может проверить. Я поэтому интересуюсь именами устройств. Интересно, что там вообще есть. Есть ли в списке сам адаптер(тогда можно попробовать открывать его), или там общий список линий микшеров, ВСЕХ установленных в системе адаптеров... |
Сообщ.
#10
,
|
|
|
Prince ну у меня на компе например (OnBoard какая-то карта) нет микшера.
А на ноуте - есть. На компе waveInGetDevCaps возвращает два микрофона (один на передней панели) и line-in. В аттаче скриншот: Прикреплённый файлScreenShot.jpg (56,8 Кбайт, скачиваний: 726) |
Сообщ.
#11
,
|
|
|
Цитата нет микшера В каком смысле "нет"? Цитата два микрофона (один на передней панели) и line-in Это они и есть - входы микшера. Цитата В аттаче скриншот: А что на вкладке воспроизведения? Поскольку вы уже соединили шнурком выход с Line-In, попробуйте такой вариант(если 7-ка позволит): влючите на вкладке воспроизведения микрофон, а записывайте с line-in. |
Сообщ.
#12
,
|
|
|
Prince, просто как о микшере я думал о другой вещи, запутался, так сказать, в терминологии
У меня на ноуте на вкладке запись есть пункт "Стерео-микшер" (скриншот в аттаче) - туда выдаётся, то что воспроизводится в колонки/наушники, и если с него записать - получается то, что мне надо а на компе - такого нет. Вот я и сказал, что на компе нет микшера, имея ввиду эту фичу на на вкладке запись Цитата Поскольку вы уже соединили шнурком выход с Line-In, попробуйте такой вариант(если 7-ка позволит): влючите на вкладке воспроизведения микрофон, а записывайте с line-in. Точно! Как я сам не допёр! На микрофоне ставим "Прослушивать с данного устройства", Выход через шнурок идёт на Line In,а оттуда пишем смешанный сигнал. А если вставить "двойник" - его ещё можно будет одновременно и на наушниках слушать. Единственный минус - слышишь не только собеседника, но ещё и себя... Прикреплённый файл____________________.jpg (41,82 Кбайт, скачиваний: 763) |