На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Одновременная запись входа и выхода , Никак не удаётся запись и микрофона и с выхода карты одновременно
    Опробованная методика:

    Закольцевал (кабелем папа-папа) на карте выход --> line in.
    Пытаюсь одновременно записать с микрофона и line in (с помощью 'waveinopen' из Windows MultiMedia) даже из разных приложений.
    Поочерёдно работает. Вместе - выдает MMSYSERR_ALLOCATED (устройство уже используется). Хотя DeviceID разный - один микрофон, другой - line-in.

    Вопрос к знатокам DirectSound :
    Будет ли работать одновременная запись микрофона и line-in с его помощью?

    А ещё лучше:
    Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки?
    А потом я уже смешаю их с потоком из микрофона...
      Цитата
      Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки?

      Нет, нельзя.
      Вероятно( я не уверен, так как не имел счастья познакомиться с win7 близко), это можно сделать при помощи интерфейсов win7 (см. core audio). В core audio возможно управление цифровыми потоками аудио из приложений средствами ОС, что раньше решалось применением транзитных виртуальных звуковух.

      Цитата
      Пытаюсь одновременно записать с микрофона и line in (с помощью 'waveinopen' из Windows MultiMedia) даже из разных приложений.
      Поочерёдно работает. Вместе - выдает MMSYSERR_ALLOCATED (устройство уже используется). Хотя DeviceID разный - один микрофон, другой - line-in.

      Цитата
      Хотя DeviceID разный

      А откуда вы его берёте - разный? :huh:
      DeviceID из waveinopen, в концепции WinXP, ссылается на "цифровой выход" звукового адаптера (АЦП). В обычных адаптерах, он(АЦП) один.
      А "микрофон", "line-in" - аналоговые входные линии микшера. Микшер(смеситель) - смешивает входные сигналы, а его выход подключен ко входу АЦП.
      Микшер и АЦП - функциональные блоки звукового адаптера.

      Физически невозможно осуществить независимую запись сигналов с разных входов микшера в одноканальной звуковой карте. Под одноканальностью в данном случае понимается наличие на борту звуковой карты одного АЦП, с одним стереовходом.

      Концепция работы с аудио(и соотвественно, терминология) win7 отличается от WinXP.
      В Win7, микрофон и пр. линии, представлены как конечные девайсы(audio endpoint devices), но на уровне аппаратном они остались тем, чем были : входными линиями аппаратного микшера, подключенного к одноканальному АЦП.
      Вместе с тем, простой способ одновременно записывать микрофон и "выход" существует Запись звука с выхода звуковой карты. Хотя возможности этого способа ограничены, он "негибкий". Ну и плюс к тому попытайтесь разобраться с сore audio...
        Насколько знаю, обычные звучки не могут использовать два разных входа АППАРАТНО, то есть никакая винда это не исправит. А в современных ноутбуковских звучках вообще пошла мода оставлять только микрофонный вход, моно. Если есть линейный вход - можно использовать правый и левый каналы, как независимые.
        Цитата maxefanov @
        Нельзя ли с его помощью считать из какого-нибудь буфера звуковой карты текуще-воспроизводимые звуки?

        Это, может быть, и получится, но зачем? Наложить голос на минусовку? Но это не так делается.
          Prince, благодарю за развёрнутый ответ.

          Действительно, у меня Win7 - поэтому, когда я получил разный DeviceID с помощью waveInGetNumDevs / waveInGetDevCaps я и подумал, что можно писать звук параллельно с микрофона и line-in...

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

          Core audio - покопаю, хотя не хотелось бы в требования добавлять "только win 7".

          Может совмещу как-то : типо "Или win7 - или звуковуху с микшером давайте"...

          Добавлено
          Mikle
          у меня не минусовка. У меня разговор двух людей. Нужно смешать то, что говорит один с тем, что говорит другой и записать в файл.

          Программно смешать два сэмпла - не вижу никаких проблем,
          главное:
          записать то, что говорят в микрофон, с тем, что слышно в динамиках
            Цитата maxefanov @
            главное:
            записать то, что говорят в микрофон, с тем, что слышно в динамиках

            А то, "что слышно в динамиках", оно откуда берётся? Оно ведь воспроизводится из файла? Или, к примеру, по скайпу? Тогда можно записать только микрофон, а ПОТОМ смикшировать, в случае скайпа и т. п. есть способы кеширования.
              Mikle
              Не обязательно скайп - я слышал, там есть API

              Но, к примеру, любая другая программка для общения по сети, о которой ничего не известно (в смысле, неизвестно как из неё получить звуковой поток)
              а она просто выдаёт звук на звуковуху (наушники, динамики) и всё.

              P.S. Я уже осознал ограничения - тему можно считать раскрытой (или закрытой, кому как больше нравиться),
              Prince, благодарю ещё раз :-)
                Цитата
                Придётся в требованиях к программе указать, что обязательно наличие микшера у звуковой карты.

                Ой, не надо. Такое требование безграмотное. Всё равно что потребовать для нормальной работы программы наличия чипсета на материнке.
                Видимо, я плохо объясняю.
                Микшер и так обязательная часть звуковой карты. Регулятор громкости винды как раз управляет микшером. Входы( line-in, mic, "то, что слышно", и пр. - это входы микшера. Выходы(line-out и пр. ) - выходы микшера.
                Сигналы(аналоговые) со входов микшера_записи смешиваются, в зависимости от настроек входов. Результирующий(суммарный) аналоговый сигнал, с выхода микшера_записи подаётся в цифровую часть звуковухи - на вход АЦП. А с выхода АЦП уже цифровой поток захватывается приложением, через любой из доступных интерфейсов(wavein, directx etc). Управление микшером програмно осуществляется при помощи API mixeropen и пр.

                Выход микшера записи - один. И вход АЦП соотвественно тоже один(стерео). Поэтому, вы можете записывать одновременно любую комбинацию сигналов(cумму сигналов) со входов, но на одну стереодорожку.
                Скачайте справочные листы на любой из аудиокодеков реалтек и посмотрите функциональную схему - увидите, как коммутируются аналоговые сигналы, какие цифровые потоки в нём гуляют.


                Ну а как вин7 уживается с микшером конкретной звуковухи - это отдельная песня. То можно выяснить в натуре. Как я уже сказал, в вин7 изменили в корне концепцию работы со звуком, в вин7 появились новые, свои собственные интерфейсы. А все "морально устаревшие" интерфейсы работают поверх звукового ядра win7, cо всеми вытекающими. Именно поэтому waveInGetNumDevs возвращает вам не 1/2, как было бы в winXP, а ...надцать, в зависимости от того, что звуковое ядро win7 cчитает "устройством".


                Какие имена устройств возвращает waveInGetDevCaps?
                  Кстати, многие звучки позволяют микшировать сразу, то есть достаточно подать сигнал с микрофона на выход, и писать выходной сигнал, готовый микс, в Audigy называется "What U Hear".
                    Цитата
                    Кстати, многие звучки позволяют микшировать сразу

                    Как это, "кстати"? А об чем же я с самого начала толкую? :D

                    Я бы сказал, все современные, во всяком случае в Sound Blaster PCI128 такая фишка как вход "wave(What U Hear)" уже есть, а эта карта не помню какого года выпуска.
                    Позволяют, с небольшой разницей. Микшер Audigy "подрабатывает по совместительству" мультиплексором, а реалтековские микшеры ведут себя собственно как нормальные микшеры. Правда, мне почему-то всё попадаются без раздельных регулировок каналов, что неудобно.
                    В Audigy микрофон включается в микшере воспроизведения, а пишется "What U Hear", в реалтек же можно включить "What U Hear" и "микрофон" в микшере записи(а можно настроить микшеры аналогично Audigy).

                    В данном случае, проблема в том, что вин7 распроряжается микшером как хочет, в соотвествии со своими "взглядами" на аудиоустройства. Входы микшера она "понимает" как отдельные конечные устройства. При открытии такого устройства(например, "микрофона") средствами winmm, вин7(я так полагаю, не могу утверждать :-? ) самостоятельно настраивает микшер, включая необходимую линию и заглушая прочие. В принципе, никто не запрещает включить все необходимые линии уже после открытия устройства, например, из управляющей программы от производителя, но и эти операции вероятно будут проводиться транзитом через интерфейсы вин7, т.е., подводных камней может быть ещё штук сорок, например, блокировка линий, если есть линии, "открытые" приложениями в качестве "устройства", подобно тому, как ТС описывает поведение waveinopen. Это ТС может проверить.

                    Я поэтому интересуюсь именами устройств. Интересно, что там вообще есть. Есть ли в списке сам адаптер(тогда можно попробовать открывать его), или там общий список линий микшеров, ВСЕХ установленных в системе адаптеров... :-?
                    Сообщение отредактировано: Prince -
                      Prince ну у меня на компе например (OnBoard какая-то карта) нет микшера.
                      А на ноуте - есть.

                      На компе waveInGetDevCaps возвращает два микрофона (один на передней панели) и line-in.

                      В аттаче скриншот:
                      Прикреплённый файлПрикреплённый файлScreenShot.jpg (56,8 Кбайт, скачиваний: 726)
                        Цитата
                        нет микшера

                        В каком смысле "нет"?
                        Цитата
                        два микрофона (один на передней панели) и line-in

                        Это они и есть - входы микшера.

                        Цитата
                        В аттаче скриншот:

                        А что на вкладке воспроизведения?
                        Поскольку вы уже соединили шнурком выход с Line-In, попробуйте такой вариант(если 7-ка позволит): влючите на вкладке воспроизведения микрофон, а записывайте с line-in.
                        Сообщение отредактировано: Prince -
                          Prince, просто как о микшере я думал о другой вещи, запутался, так сказать, в терминологии
                          У меня на ноуте на вкладке запись есть пункт "Стерео-микшер" (скриншот в аттаче) - туда выдаётся, то что воспроизводится в колонки/наушники, и если с него записать - получается то, что мне надо
                          а на компе - такого нет.
                          Вот я и сказал, что на компе нет микшера, имея ввиду эту фичу на на вкладке запись

                          Цитата
                          Поскольку вы уже соединили шнурком выход с Line-In, попробуйте такой вариант(если 7-ка позволит): влючите на вкладке воспроизведения микрофон, а записывайте с line-in.


                          Точно! Как я сам не допёр! На микрофоне ставим "Прослушивать с данного устройства", Выход через шнурок идёт на Line In,а оттуда пишем смешанный сигнал. А если вставить "двойник" - его ещё можно будет одновременно и на наушниках слушать. Единственный минус - слышишь не только собеседника, но ещё и себя...
                          Прикреплённый файлПрикреплённый файл____________________.jpg (41,82 Кбайт, скачиваний: 763)
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0459 ]   [ 19 queries used ]   [ Generated: 9.05.24, 23:13 GMT ]