На главную Наши проекты:
Журнал   ·   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
  
> Одновременное работа микрофона и воспроизведение
    Вопрос чисто технический
    Есть первое приложение которое считывает данные с микрофона
    и есть второе приложение которое эти данные воспроизводит на этом же устройстве
    Всё вроде по отдельности работает, но есть одна проблема??? при воспроизведении я слышу суммарный сигнал и от микрофона и то что выводит второе приложение

    Вопрос: можно ли чтобы входной канал устройства только принимало сигнал, но не запихивал его одновременно и в канал выхода, а подсовывать туда вместо них данные из второго приложения???
      Твой код воспоиззведения должен работать с картой не напрямую, а через миксер (MixerGetNumDevs, MixerGetDevCaps etc). Тогда ты сможешь разделить сигналы.
        Цитата Ivan123 @
        Тогда ты сможешь разделить сигналы

        Спасибо за направление, буду копать.
        Остаётся вопрос - как миксер повлияет на скорость вывода через второе приложение?
          Цитата Ivan123 @
          Вопрос: можно ли чтобы входной канал устройства только принимало сигнал, но не запихивал его одновременно и в канал выхода, а подсовывать туда вместо них данные из второго приложения???

          Это называется дуплекс, как правило современными звучками поддерживается, проверяется и настраивается в системном микшере.
            При записи сигнал не посылается на выход сам по себе, если только в настройках микрофона (в системных настройках) не включена "прослушка".
            Если нужно быстрое воспроизведение записи с микрофона (почти без задержек), нужно копать в сторону ASIO.
              Цитата Jin X @
              При записи сигнал не посылается на выход сам по себе

              Запускаю первое приложение...
              в нём WaveInOpen....
              получаю данные с микрофона...
              зацикливание приложения...
              Результат: в наушниках полное отсутствие каких либо признаков жизни


              Запускаю второе приложение...
              генерю белый шум...
              запускаю WaveOutOpen...
              зацикливание приложения...
              Результат: в наушниках слышу то что говорю в микрофон + белый шум (А хотелось бы только белый шум)


              пробовал целый день осилить MIXER) вроде все каналы удалось определить (всё что можно)
              Картина такова:


              Можно ли при таких данных как то реализовать мою схему пока не знаю, тем более пока ещё не понял как мне эти параметры можно изменить)
              Сообщение отредактировано: Ivan123 -

              Прикреплённый файлПрикреплённый файлMIXER_1.png (35,5 Кбайт, скачиваний: 1310)
                Цитата Ivan123 @
                Всё вроде по отдельности работает, но есть одна проблема??? при воспроизведении я слышу суммарный сигнал и от микрофона и то что выводит второе приложение

                Как написана программа так и работает. Поставь колонки подальше от микрофона.
                  Цитата gathering @
                  Поставь колонки подальше от микрофона

                  Вы хоть последнее сообщение прочитали то? где там написано про колонки?) совет на уровне 8 класса)
                    Если у тебя ноутбук. Ты хочешь сделать чтоб он сам себя и слышал и не слышал?
                      Цитата Ivan123 @
                      Результат: в наушниках слышу то что говорю в микрофон + белый шум (А хотелось бы только белый шум)
                      А первая программа при этом пишет? Или нет? Или в любом случае так происходит?
                      Что за карточка, кстати, интересно?

                      Добавлено
                      А если писать через какой-то другой софт, а воспроизводить своей программой, микрофон будет слышно?
                        Цитата Jin X @
                        А первая программа при этом пишет

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

                        Цитата Jin X @
                        Что за карточка, кстати, интересно?

                        Карточка встроенная, ничего особого.
                          Цитата Ivan123 @
                          извлекает данные формы сигнала после АЦП и запихивает их в буфер
                          В какой буфер?
                            Цитата Jin X @
                            В какой буфер?

                            заполняет массив в программе
                            Сообщение отредактировано: Ivan123 -
                              Цитата Jin X @
                              А если писать через какой-то другой софт, а воспроизводить своей программой, микрофон будет слышно?
                              ???

                              Добавлено
                              Если нет, значит получается, что в коде какой-то косяк, а не в системных настройках.
                              p.s. Разумеется, устройство должэно быть такое же выбрано в этой программе.
                                Цитата Jin X @
                                через какой-то другой софт

                                А что вы имеете ввиду через другой софт?
                                У меня всё реализовано через два приложения Delphi7. Использовать какой то другой софт не планировалось, да и скорее всего будет не рационально. Просто нужно решить вопрос с потоками - всё остальное работает нормально.
                                  Цитата Ivan123 @
                                  А что вы имеете ввиду через другой софт?
                                  Для начала нужно понять – ошибка в настройках системы/звуковой карты или в вашем коде.
                                  Другой софт – любая другая программа для записи звука. Хоть Audacity, Audition, REAPER, Sound Forge...

                                  1. Запускаете свою прогу для записи, свою для воспроизведения – микрофон слышно (это уже понятно).
                                  2. Запускаете стороннюю прогу для записи, свою для воспроизведения (любого звука, хоть синуса) – микрофон слышно???
                                  3. Запускаете свою прогу для записи, стороннюю для воспроизведения – микрофон слышно???
                                  4. Запускаете стороннюю прогу для записи, стороннюю для воспроизведения – микрофон слышно???

                                  Добавлено
                                  Я с такой проблемой не сталкивался, но я бы сделал так, чтобы хоть что-то понять...
                                    Цитата Jin X @
                                    Для начала нужно понять – ошибка в настройках системы/звуковой карты или в вашем коде

                                    1. мне не совсем понятно для чего проверять настройки системы/звуковой карты сторонними программами, если все встроенные мультимедийные функции в системе работают и так нормально, и кино и музыка и скайп и запись на микрофон и т.п.
                                    2. в моём коде нет ничего особенного ( я уже писал набором каких функций происходит запись и воспроизведение звука - там не хватает только ещё несколько функций которые заполняют и освобождают буфер аудиоустройства) и раз я слышу записанные звуки в наушниках, значит звук пишется. И наконец если я слышу белый шум то и воспроизведение тоже идёт нормально.
                                    3. я прочитал описание возможностей ваших программ, посмотрел видео. Да скорее всего, поскольку это обычные микшера, они могут делать то что мне необходимо. Вы мне предлагаете разобрать весь их код, чтобы понять как они это делают? для меня на этом этапе это не реально.

                                    Вот кусок (начало) кода, которым я пытаюсь отключить подачу сигнала на оконечный микшер:
                                    я просто пока не знаю как пользоваться миксерными функциями.
                                    Возможности микшера я определил, а вот как в нём изменить параметры не знаю.) Возможно всё достаточно просто, просто я не знаю какие кнопки тыкать и какие рычаги дёргать)
                                    Если мне кто нибудь поможет дописать процедуру, буду очень признателен.

                                    ExpandedWrap disabled
                                      begin
                                      ...........................................
                                          WaveInOpen(Addr(WaveIn), WAVE_MAPPER, addr(WaveFormatEx), Handle, 0, CALLBACK_WINDOW);
                                       
                                          numdevs:=mixerGetNumDevs;
                                          for i:=0 to numdevs-1 do
                                            begin
                                              mixerGetDevCaps(i,@caps, sizeof(caps));
                                              //cb_devs.Items.Add(caps.szPName);
                                            end;
                                          ItemIndex:=2; //?? у меня их 4 второй "общая громкость"
                                          mixerOpen(@mixer,ItemIndex,handle,0,CALLBACK_WINDOW);
                                          mixerGetDevCaps(mixer,@caps,sizeof(caps));
                                        //////////////////////////////////////////////////////////
                                          MaxLinecnt:=255;
                                          //cb_dest.Clear;
                                          line.cbStruct:=sizeof(line);
                                          curDest:=-1;
                                          for i:=0 to MaxLinecnt do
                                            begin
                                              inc(curDest);
                                              line.dwDestination:=curDest;
                                              err:=mixerGetLineInfo(i,@line,MIXER_GETLINEINFOF_DESTINATION or MIXER_OBJECTF_HMIXER);
                                              if err<>0 then
                                                break;
                                                add:=line.szname;
                                            end;
                                          ItemIndex:=0;
                                       //////////////////////////////////////////////////////
                                          curDest:=ItemIndex;
                                          line.cbStruct:=sizeof(line);
                                          line.dwDestination:=curDest;
                                          err:=mixerGetLineInfo(mixer,@line,MIXER_GETLINEINFOF_DESTINATION or MIXER_OBJECTF_HMIXER);
                                          maxSrc:=line.cConnections;
                                          mixerlineid[0]:=line.dwLineID;
                                          add:=(line.szname);
                                         curSrc:=0;
                                         for i:=0 to maxSrc-1 do
                                           begin
                                             line.dwDestination:=curDest;
                                             line.dwSource:=i;
                                             err:=mixerGetLineInfo(mixer,@line,MIXER_GETLINEINFOF_SOURCE or MIXER_OBJECTF_HMIXER);
                                             if err<>0 then
                                               break;
                                               add:=('-     '+line.szname);
                                               mixerlineid[i+1]:=line.dwLineID;
                                          end;
                                          ItemIndex:=0;
                                      /////////////////////////////////////////////////////////////////////////
                                          LineId:=mixerlineid[ItemIndex]; // Вспоминаем ID дорожки
                                          line.cbStruct:=sizeof(line);
                                          line.dwLineID:=LineID;
                                          mixerGetLineInfo(mixer,@line,MIXER_GETLINEINFOF_LINEID);
                                          if line.cControls=0 then
                                            exit;
                                          ctrl.cbStruct:=sizeof(ctrl);
                                          ctrl.cbmxctrl:=sizeof(TMIXERCONTROL);
                                          ctrl.dwLineID:=LineID;
                                          ctrl.cControls:=line.cControls;
                                          ctrl.pamxctrl:=@m_ctrl;
                                          mixerGetLineControls(mixer,@ctrl,MIXER_GETLINECONTROLSF_ALL);
                                          for i:=0 to ctrl.cControls-1 do
                                            begin
                                              ItemsAdd[i]:=m_ctrl[i].szName;
                                            end;
                                          ItemIndex:=0;
                                      ////////////////////////////////////////////////////////////////////////
                                          ctrl_sel:=itemindex;
                                          if m_ctrl[ctrl_sel].cMultipleItems=0 then
                                            begin
                                              mxc.cbStruct:=sizeof(mxc);
                                              mxc.dwControlID:=m_ctrl[ctrl_sel].dwControlID;
                                              MXC.cMultipleItems:=m_ctrl[ctrl_sel].cMultipleItems;
                                              mxc.cChannels:=1;
                                              mxc.cbDetails:=sizeof(mxcd);
                                              mxc.paDetails:=@mxcd;
                                              err:=mixerGetControlDetails(mixer,@mxc,0);
                                              if err<>0 then
                                                begin
                                                  exit;
                                                end;
                                              for i:=0 to MXC.cMultipleItems-1 do
                                                if mxcl[i]<>0 then
                                                  begin
                                                    caption:=inttostr(i);
                                                    mxcd.dwValue:=i;
                                                    break;
                                                  end;
                                            end;
                                            mixerSetControlDetails(ItemIndex, @mxc, MIXER_SETCONTROLDETAILSF_VALUE);
                                      .............................................
                                      end;
                                      Ivan123, может у тебя в настройках аудиосистемы указано, что надо писать не только микрофон а ещё и добавлять к нему аудио-выход.
                                        Цитата amk @
                                        ещё и добавлять к нему аудио-выход

                                        я ведь выше написал что, что все приложения, в том числе и skype, и телефон работают нормально, иначе я бы слышал в наушниках собственный голос)
                                        А если вы имели ввиду вот эту птицу:

                                        ...то как видно из PS никакой птицы нет.
                                        Прикреплённый файлПрикреплённый файлMIXER_2.png (13,74 Кбайт, скачиваний: 1461)
                                          Попробуйте вот эти программы. Тоже на Delphi, с исходниками.
                                          WaveMeter - пишет с микрофона, PlayTone/PlayWave - воспроизводят.
                                          Если они будут работать нормально (одновременная запись и воспроизведение), можете там посмотреть как сделано (а у вас значит где-то косяк в коде). Там безо всяких микшеров.

                                          Прикреплённый файлПрикреплённый файлWaveMeter.zip (222,38 Кбайт, скачиваний: 564)
                                          Прикреплённый файлПрикреплённый файлPlayTone.zip (213,33 Кбайт, скачиваний: 555)
                                          Прикреплённый файлПрикреплённый файлPlayWave.zip (3,55 Мбайт, скачиваний: 545)
                                            Цитата Jin X @
                                            Если они будут работать нормально

                                            Спасибо конечно что пытаетесь мне помочь, но воз и ныне там)
                                            Можете сами попробовать и вы убедитесь что первые два софта не могут выполнить задачу которая стоит передо мной:
                                            1. подключите наушники с микрофоном через USB
                                            2. запустите одним приложением WaveMeter и нажмите на старт (если напоёте в микрофон визуально увидите что данные читаются)
                                            3. запустите вторым приложением PlayTone и нажмите воспроизведение одного из 3 сигналов (в наушниках вы услышите и сам сигнал и то что в этот момент говорите в микрофон)

                                            Отпишитесь пожалуйста что у вас получиться, очень удивлюсь если будет как нибудь иначе, для чистоты эксперимента попробую этот вариант на другом системнике.)
                                              Цитата Ivan123 @
                                              подключите наушники с микрофоном через USB
                                              У меня нет наушников с микрофоном для USB. Если не считать USB-аудиоинтерфейс, к которому подключен микрофон (через XLR) и колонки (через RCA - тюльпаны). Но с этой связкой всё нормально, микрофон пишется (шкала дёргается), звук воспроизводится без того, что я говорю в микрофон.
                                              Правда, есть ещё USB-"палочка" SB Play с джеками для входа и выхода. Но я не уверен, что вы это имеете в виду.
                                              Что у вас за наушники с микрофоном, подключаемые через USB ?
                                                Цитата Jin X @
                                                Что у вас за наушники с микро

                                                Logitech USB Heeadset H340

                                                Добавлено
                                                Мне сейчас подумалось, что может быть вся проблема от того что в системе стоит ещё одна звуковая плата? (правда к её выходу непосредственно ничего не подключено кроме монитора)тем более что микрофон или наушники я воткнуть туда вообще не могу)
                                                Я не совсем хорошо знаю организацию работы (вернее совсем не знаю)) мультимедийных устройств, но к сожалению я не могу проверить как этот вариант будет работать без второго канала аудио, поскольку он "вшит в видео".

                                                Добавлено
                                                Цитата Ivan123 @
                                                не могу проверить как этот вариант будет работать

                                                Отключил этот аудио канал в системе - результат тот же)
                                                Сообщение отредактировано: Ivan123 -
                                                  Ну тут можно экспериментировать сколько угодно. Можно попробовать писать с гарнитуры, а выводить в другое устройство. Можно и писать, и выводить на другом устройстве. И ещё 100500 вариантов.
                                                  Вообще, такого глюка не должно быть. Может, это гарнитура так работает (или её драйвер).
                                                  p.s. Кстати, звук с микрофона с отставанием или нет?

                                                  Цитата Ivan123 @
                                                  1. мне не совсем понятно для чего проверять настройки системы/звуковой карты сторонними программами, если все встроенные мультимедийные функции в системе работают и так нормально, и кино и музыка и скайп и запись на микрофон и т.п.
                                                  Запись и воспроизведение по отдельности, может, и нормально работает, но вместе вот такой глюк получается. Причём, это может быть, например, только при использовании разных программ (поэтому Skype работает нормально; либо скайп может использовать не MME, а DirectSound, к примеру). Вариантов масса. Поэтому сторонними прогами есть смысл попробовать тоже. Проги MME, разумеется, тоже должны использовать.

                                                  Добавлено
                                                  Можно ещё попробовать работать через BASS. Ещё вариант для эксперимента... :)
                                                    Мне думается, имеет смысл выкладывать исходники. Ясно и внятно описать проблему. А то уж сколько страниц идет интенсивный поиск чего-то в тёмной комнате.
                                                      Цитата Jin X @
                                                      Ну тут можно экспериментировать сколько угодно

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

                                                      Цитата Prince @
                                                      Ясно и внятно описать проблему

                                                      я уже ранее писал, приходится повторяться
                                                      одно приложение считывает сигнал с микрофона (но не воспроизводит его сразу же на выходе, а записывает его в какой то промежуточный буфер (виртуальный блок памяти), и только). Второе приложение считывает эти данные, обрабатывает, изменяет по определённому алгоритму и записывает во второй промежуточный буфер. Третье приложение считывает из второго буфера и воспроизводит на выход. Что я нового написал? Просто средний кусок выбросил из предыдущего описания, он совершенно не имеет никакого значения для решения проблемы.
                                                      Для чего всё разбито на 3 (а может и 4 и 5 и тд) приложения можно догадаться и самому - разница по времени между первым и последним должна быть минимальной.

                                                      Цитата Prince @
                                                      А то уж сколько страниц идет интенсивный поиск чего-то в тёмной комнате

                                                      Если вы не понимаете в чём суть вопроса, это совсем не означает что на него нет ответа? и код кстати выложен выше - надо внимательнее читать тему чтобы давать советы.

                                                      Что касается ещё большей конкретики выкладываю схему стандартного микшера (просторы интернета), на которой крестиками указаны каналы которые необходимо отключить. В общем то весь вопрос заключается как это сделать программно). Кстати к сожалению люди которые меня туда отправили, почему то самоликвидировались, а мне их помощь в этом вопросе ох как нужна)
                                                      Прикреплённый файлПрикреплённый файлmixer_3.png (57 Кбайт, скачиваний: 1006)
                                                      Сообщение отредактировано: Ivan123 -
                                                        Цитата Ivan123 @
                                                        Вы так и не отписались об эксперименте с наушниками с микрофоном, или у вас нет возможности опробовать такой вариант?
                                                        Я же написал, что у меня нет USB-гарнитуры. Не покупать же специально для теста :)
                                                        Попробуйте сами другую гарнитуру, если есть возможность. Другую звуковуху.

                                                        Цитата Ivan123 @
                                                        и код кстати выложен выше - надо внимательнее читать тему чтобы давать советы.
                                                        Это не исходник, это кусок кода. Выложили бы полноценные проекты принимающей программы, обрабатывающей, выводящей звук. Чтобы другие могли потестить их у себя.

                                                        Цитата Ivan123 @
                                                        надо внимательнее читать тему чтобы давать советы.
                                                        Вам надо немного повежливее быть, а то иногда возникает ощущение, что вы одолжение делаете, позволяя другим давать вам советы...
                                                          Цитата Jin X @
                                                          надо немного повежливее быть

                                                          как был дан совет, таков и ответ
                                                          Вы думаете что я только задаю вопросы? вы ошибаетесь, готов поделиться своими знаниями в физике математике безвозмездно в рамках другой темы

                                                          Добавлено
                                                          Цитата Ivan123 @
                                                          крестиками указаны каналы которые необходимо отключить. В общем то весь вопрос заключается как это сделать программно

                                                          При чём здесь модули обрабатывающие звук, и разве я просил потестить свою программу?, я выложил весь кусок кода который сумел написать касательно этого вопроса, а вас просил потестить тот софт который вы же мне и предложили в качестве решения проблемы) причём без всякого намёка на неуважение
                                                          Сообщение отредактировано: Ivan123 -
                                                            Цитата Jin X @
                                                            Кстати, звук с микрофона с отставанием или нет?

                                                            Звук без отставания
                                                            А у вас микрофон и колонки подключены к одной звуковой плате или микрофон к встроенному а колонки к отдельной звуковухе? если к разным, то первая программа открывает одно звуковое устройство для записи (только для записи), а вторая второе звуковое устройство для воспроизведения (мне так думается, хотя возможно я и ошибаюсь)

                                                            Добавлено
                                                            Цитата Jin X @
                                                            Попробуйте сами другую гарнитуру

                                                            Попробовал и не одну - результат тот же, вот другую систему проверить не удалось пока, поскольку Delphi только у меня

                                                            Добавлено
                                                            Цитата Jin X @
                                                            Чтобы другие могли потестить их у себя

                                                            Кстати мои программы и пишущая и воспроизводящая ничем не отличаются от WaveMeter и PlayTone, только я удалил все комментарии и проверки, все кнопки и картинки уровней (мне это ни к чему) . Код воспроизводящей лежит в предыдущей ветке, только там вместо синуса белый шум.
                                                            Сообщение отредактировано: Ivan123 -
                                                              Цитата Ivan123 @
                                                              Звук без отставания
                                                              Получается, что вы слышите свой голос одновременно с тем, как говорите + обработанный с задержкой.
                                                              Скорее всего, это какая-то аппаратная ерунда. Возможно, дефект на карте. Потому что программно вывести записанный звук без задержки не может даже система. Без задержек можно вывести только используя ASIO. Даже если вы поставите галочку "прослушивать звук", он будет звучать не сразу, попробуйте.
                                                                Цитата Jin X @
                                                                + обработанный с задержкой

                                                                задержку я даже не различаю (всё таки комп не пентиум) Если посмотреть на структурную схему которую я выложил, этой задержки в принципе не должно быть, там в принципе нет того чтобы сигнал задерживался, само определение микшер - просто смешивание сигналов. Но вот если между приёмом сигнала и выводом вставить обработку эта задержка уже существенная, а в одном приложении просто огромная.
                                                                Сообщение отредактировано: Ivan123 -
                                                                  Цитата Jin X @
                                                                  Получается, что вы слышите свой голос одновременно с тем, как говорите + обработанный с задержкой.
                                                                  Скорее всего, это какая-то аппаратная ерунда. Возможно, дефект на карте. Потому что программно вывести записанный звук без задержки не может даже система. Без задержек можно вывести только используя ASIO. Даже если вы поставите галочку "прослушивать звук", он будет звучать не сразу, попробуйте.

                                                                  Пробовал, на нормальных звуковых картах звук идёт напрямую без всяких задержек. Задержка есть на запись.
                                                                  ASIO - не панацея, это просто сокращает количество промежуточных этапов, даёт ПО более короткий доступ к оборудованию, задержки уменьшаются, но они остаются и зависят от быстродействия CPU и RAM, что о многом говорит.
                                                                  Вот системный микшер в Windows XP:
                                                                  user posted image

                                                                  Да, в более новых Windows микшер убили, но до этих настроек добраться можно.
                                                                  На "Master Volume" я спокойно управляю прохождением сигналов со входов звучки на выход.
                                                                  На "Recording Control" я так же спокойно выбираю источник записи и выставляю его уровень НЕЗАВИСИМО от уровня прохождения на выход.
                                                                  Далее любые программы записи, хоть Фонограф, пишут звук с указанного источника, при этом воспроизведение работает, на выход проходит только выбранное.
                                                                  Такие программы, как Скайп и т. п. могут сами лезть в микшер и делать нужные настройки, используя API Панели Управления. Но большая часть программ, в том числе профессиональные программы для студийной звукозаписи, оставляют эти настройки пользователю.
                                                                  ASIO - это другое, тут без него.
                                                                  Сообщение отредактировано: Mikle -
                                                                    Цитата
                                                                    я уже ранее писал, приходится повторяться
                                                                    одно приложение считывает сигнал с микрофона (но не воспроизводит его сразу же на выходе, а записывает его в какой то промежуточный буфер (виртуальный блок памяти), и только). Второе приложение считывает эти данные, обрабатывает, изменяет по определённому алгоритму и записывает во второй промежуточный буфер. Третье приложение считывает из второго буфера и воспроизводит на выход. Что я нового написал? Просто средний кусок выбросил из предыдущего описания, он совершенно не имеет никакого значения для решения проблемы.
                                                                    Для чего всё разбито на 3 (а может и 4 и 5 и тд) приложения можно догадаться и самому - разница по времени между первым и последним должна быть минимальной.

                                                                    По описанию похоже на рениксу. Вы пытаетесь выжать какую задержку? В один семпл? В сто?
                                                                    ?
                                                                    Цитата
                                                                    Если вы не понимаете в чём суть вопроса, это совсем не означает что на него нет ответа? и код кстати выложен выше - надо внимательнее читать тему чтобы давать советы.

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

                                                                    Насколько помню, суть проблемы, в общих словах, была в наложении сигналов/данных. С учётом того, что(по вашему описанию), есть три приложения, которые юзают(обрабатывают) по сути одни и те же данные, всё возможно. Сюда можно также добавить тот факт, что еще несколько дней назад вы спрашивали, как обеспечить непрерывное воспроизведение. Всё это позволяет предположить, что вы где-то накосячили. Я этого не утверждаю, но это вполне возможно.
                                                                    Микшер вы можете настроить виндовыми средствами. Залезать в функции микшера, имхо, на данном этапе не имеет смысла. Возможно, и вполне вероятно, настройки микшера с проблемой наложения сигналов не связаны. Мне думается, вам стоит проанализировать, что на входе и выходе каждой из ваших программ. И только будучи абсолютно уверенным в том, что на выходе каждой программы, в цепочке программ, обрабатывающих аудио данные, именно то, что вам нужно(а проблема с наложением сигналов остается), искать "внешние" причины.

                                                                    Если вам нужно отключить определенный контрол микшера, имхо, создайте отдельную тему.
                                                                    Я могу ошибаться, но предположу, что ваши вопросы по функциям микшера в данной теме вызывают недоумение не только у меня. У вас есть кучка программ, которые непонятно как работают и непонятно что делают - черный ящик, в котором вероятно баг. А вы выкладываете кусок кода, в общем-то не имеющего отношения к проблеме, и просите помочь его "допилить".

                                                                    На всякий пожарный случай, я не умничаю. И мы тут ничем не меряемся. Я пытаюсь мягко убедить вас обратить внимание на ваш код, структуру программ(ы); возможно, на изначальную постановку задачи. Вернуться к истокам, и к исходникам.
                                                                    Сообщение отредактировано: Prince -
                                                                      Цитата Prince @
                                                                      Всё это позволяет предположить, что вы где-то накосячили

                                                                      Допустим я накосячил в своём коде, но ведь я никак не могу накосячить в чужих разработках.
                                                                      Я не понимаю для чего вам нужно обязательно посмотреть именно мой код, если выше выложены два кода WaveMeter и PlayTone.
                                                                      Уж в них то я никак не мог накосячить. Вот я что писал ранее:

                                                                      Цитата Ivan123 @
                                                                      1. подключите наушники с микрофоном через USB
                                                                      2. запустите одним приложением WaveMeter и нажмите на старт (если напоёте в микрофон визуально увидите что данные читаются)
                                                                      3. запустите вторым приложением PlayTone и нажмите воспроизведение одного из 3 сигналов (в наушниках вы услышите и сам сигнал и то что в этот момент говорите в микрофон)


                                                                      Результат выполнения этих действий точно такой же как и с моим кодом - вот поэтому у меня и возникли сомнения о сути вопроса.

                                                                      Несколько слов не по теме: вчера пришлось по моему основному профилю помогать на другом форуме. Так вот там одному человеку пытались дать совет на 30 листах совершенно не понимая сути вопроса, из них 90% были - зачем тебе это нужно, не заморачивайся), и не потому что у этих людей мало интеллекта, просто всё очень банально - они просто никогда не решали подобную задачу в силу того, что специфика их работы такой задачи перед ними никогда и не ставила.

                                                                      Если возможно в начале поисков я и не знал в каком пути мне конкретно двигаться, то уже после первых советов и штудирования литературы по этому направлению понял что разделение сигналов и управление аудиопотоками правильное направление в моём вопросе.
                                                                      У меня пока нет корректных знаний как этими потоками управлять, но я только учусь и всех тонкостей не знаю)

                                                                      Добавлено
                                                                      Цитата Mikle @
                                                                      Да, в более новых Windows микшер убили, но до этих настроек добраться можно

                                                                      Возможно это временный выход для меня, надо его обязательно опробовать. Только не понятно пока DELPHI7 станет на ХР?
                                                                      Как временный вариант может и подойдёт, но в результате я всёже хочу побороть миксер)
                                                                        Цитата Mikle @
                                                                        Пробовал, на нормальных звуковых картах звук идёт напрямую без всяких задержек. Задержка есть на запись.
                                                                        У меня Focusrite Scarlett 2i4 (у неё даже аппаратная прослушка есть, когда вообще не запущено аудиософта), но и тут при включенной галочке звук идёт с задержкой. Но это на 10-ке, в XP задержки может не быть, т.к. по-другому всё было реализовано.
                                                                        Используя JACK, лично у меня только через ASIO звук идёт без задержек. Хотя размер буфера не меняется (64 семпла = 2.67 мсек).
                                                                        А вообще, у меня тоже есть ощущение, что раньше "прослушка" работала без задержек, а потом стала работать с задержками. Вы на XP пробовали? А на 7, 8, 10 как?
                                                                        Ivan123, а у вас "прослушка" с задержкой идёт?

                                                                        Цитата Mikle @
                                                                        На "Master Volume" я спокойно управляю прохождением сигналов со входов звучки на выход.
                                                                        Я в 10-ке вообще нормального системного микшера найти не могу.

                                                                        Цитата Ivan123 @
                                                                        Только не понятно пока DELPHI7 станет на ХР?
                                                                        Встанет. XP выпущен в 2001 году, Delphi 7 - в 2002, так что можно считать, что он под 2000 и XP и был создан :)

                                                                        Ivan123, на самом деле Prince разумные вещи говорит: попробуйте делать вывод в файл и потом откройте его в редакторе как RAW и послушайте, что реально выводите.
                                                                        И запустить запись и параллельно с этим воспроизведение через сторонние программы (через разные в т.ч.) я бы тоже настоятельно рекомендовал. Будет ли там такой же эффект? И дальше уже от этого можно плясать...

                                                                        Цитата Ivan123 @
                                                                        просто всё очень банально - они просто никогда не решали подобную задачу
                                                                        Вы возможно увидитесь, но я почти уверен, что здесь ни у кого такой проблемы, как у вас, не возникало :)
                                                                        Поэтому и пытаемся нащупать решение "методом тыка".
                                                                          Цитата Jin X @
                                                                          а у вас "прослушка" с задержкой идёт?

                                                                          Я пока не понимаю что вы имеете ввиду "прослушка"
                                                                          Цитата Jin X @
                                                                          И дальше уже от этого можно плясать...

                                                                          Всё таки вы не совсем понимаете мою цель) без обид
                                                                          Программированием я занимаюсь только в виде узкого круга математических или физических задач связанных с трудоёмкостью расчётов.
                                                                          Я не знаю пока как мне записать даже приличный кусок, мне это надо изучать. А самое главное мне в рамках моей задачи это совершенно не нужно (записывается сэмпл (один), если я правильно понимаю термины, пока пишется второй от первого отпиливаю кусок, растягиваю, сжимаю, и т.д. (всё образно)и отдаю на выход, пока первый воспроизводится, пишется уже третий и т.д.). Т.е. единый поток. Ничего куда то в файл не записывается, и ничего из файла не воспроизводится.
                                                                          Сообщение отредактировано: Ivan123 -
                                                                            Цитата Ivan123 @
                                                                            Я пока не понимаю что вы имеете ввиду "прослушка"
                                                                            Опция в настройках звуковой карты. Вот эта
                                                                            Прикреплённый файлПрикреплённый файлMIXER_2.png (13,74 Кбайт, скачиваний: 1461)

                                                                            Добавлено
                                                                            Цитата Ivan123 @
                                                                            Всё таки вы не совсем понимаете мою цель) без обид
                                                                            Какая разница, куда нужно вам выводить – в файл или не в файл?
                                                                            Сейчас это нужно сделать именно так лишь для того, чтобы найти источник проблемы. Вот и вся цель.
                                                                            И аналогично с использованием сторонних программ. Для того, чтобы понять, проблема в вашем коде, в настройках микшера или в железе.
                                                                              Цитата Jin X @
                                                                              Опция в настройках звуковой карты. Вот эта

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


                                                                              Рейтинг@Mail.ru
                                                                              [ Script execution time: 0,1115 ]   [ 25 queries used ]   [ Generated: 16.04.24, 21:27 GMT ]