Комментарии 11
… всё это безусловно может быть сделано и делается программно, тут видимо расчёт на то, что звуковые движки бывают разные, и для особо тупых, матричных микшеров, преобразование дофига-канального звука к бинауральному безусловное благо, но с другой стороны сейчас многие движки и фазу крутят, и доплер имитируют и бинауралку сведут в разы круче…
PS.А с ASIO проблем нет, если понимать для чего оно создавалось, а с ASIO4ALL и подавно, это не баг а фича, дабы во время записи\концерта ничего не мешало…
По поводу ASIO4ALL: есть конкретный usecase: хочется включать гитарный процессор и подыгрывать под backing tracks с youtube. Когда у меня была Audigy 2 ZS звук от ASIO и из обычных приложений выводился одновременно, потом она накрылась (думаю, просто старая около 8-9 лет уже). Realtek (поправьте, если я не прав) вообще не умеет asio без ASIO4ALL. Сейчас пользуюсь гитарным интерфейсом, в нём такой проблемы нет. В общем, я веду к тому, что странно, что нету прослойки для ASIO4ALL, которая звук обычных приложений подмешивает. Соответственно с опцией её отключения, если мешает.
Тут не просто тоже самое, а именно, что оно и есть. Задержка звука с wasapi достигает 100мс (и больше), это даже критично к определению таймлайна звука, так что в статичных звуковых потоках звук чуть-чуть наперёд берётся. DirectSound уже чуть пошустрее, но всё равно задержка изредка достигает 100мс на непроизводительных машинах со встроенным звуком. Я замерял и на моём thinkpad получалось около 40мс в среднем, хотел сделать софтварный шумодав =)
На линуксах c pulse нечто среднее между directsound и wasapi. С alsa всё интереснее, можно достичь даже 5мс, но качество звука будет чрезвычайно низким. Здесь уже можно было попробовать шумодав сделать, однако проблема оказалась в том, что микрофон очень далеко от уха и он… Один. А уха два. Можно было попробовать каким-то образом обрабатывать его для дифференциации левого и правого уха, однако чрезвычайное низкое качество звука давало не столько шумодав, сколько 70~80dB шум, вместо происходящего вокруг. Через пару часов мозг привыкает, но тихие звуки из нужного источника расслышать невозможно.
По поводу быстрой обработки звука. На linux есть прикольный вариант. Настраивается Jack с блокировкой памяти и realtime режимом, pulseaudio перенаправляется в него. В итоге приложения, которые работают с Jack выдают звук достаточно быстро, но при этом остается возможность включить плеер или видео с того же youtube. Если еще взять wine и пихнуть к нему wineasio, то можно даже всякие гитарные процессоры запускать. У меня получилось Guitar Rig 5 и Revalver 3 завести. BIAS FX включается, секунду даже дает звук, а потом падает, т.к. не реализованы некоторые функции в части отрисовки интерфейса. К сожалению, Jack неплохо кушает батарейку на ноуте, поэтому к этому добавляется jackdbus, который позволяет перенаправлять pulseaudio в Jack, только когда он включен.
Хм, по поводу jack интересно, надо будет попробовать. Может быть, как-нибудь.
Проблема качества звука в декодировании, как я вижу. Ну и, скорее всего, тот факт, что замеры производились на атоме, сейчас тема стала менее интересна за счёт аппаратного шумодава. 5мс это тоже очень и очень много, мне надо фазу инвертировать, а имея нестабильный delay сложно вставить какие-либо константы. Из-за чего звук становится очень пульсирующим. Чтобы сделать его стабильным требуется по сути то самое реальное время, а на системе, работающей совершенно не в режиме реального времени этого достичь крайне сложно. И если частота дискретизации большая, требуется достаточно много времени на обработку звука, чтобы любой другой процесс мог случаем выдавить поток. Плюс буфера, их нельзя уменьшать бесконечно, по крайне менее по моему опыту.
Лично я, достигнув такой задержки, просто пускал эхо. В общем и целом, громкие звуки превращались в сильно приглушённые, а остальное становилось тихим шумом. Однако не самый качественный микрофон и ужасное качество обработки звука (мне требовались разные потоки на разные уши, сложная работа с буферами, ибо и реалтайм, но не совсем) постоянно плодили шумы (артефакты обработки, копящиеся неточности и прочее). Другими словами, смысла в этой затее с одним микрофоном — ноль.
Сейчас хочется шумодав сделать, но уже речевого микрофона. Здесь всё намного проще, качество можно снижать практически бесконечно, есть два микрофона, причём дистанция между ними приличная, да и одоканальность только помогает. Можно делать всякое, но одна из самых больших проблем — направление звука, всё ещё остаётся. В прошлый раз я её решил частотным преобразованием, сейчас в принципе идея та же, но в принципе можно будет прямо в частотном пространстве уничтожать неинтересные звуки. Другая проблема, что с виртуальными устройствами в windows я ещё не научился работать (забавно), тогда к linux доступа нет.
Диаграмма направленности: двунаправленный, с шумоподавлением;А каким способом у него реализовано шумоподавление?
А то я тут разбирал гарнитуру Logitech, написано было микрофон тоже с шумоподавлением, а на деле оказался обычный микрофон ближнего действия. Да и тут, судя по всему то же самое.
Хоть один производитель в "виртуально-7.1 наушники" гироскоп ставит? Ну, чтобы при повороте головы (который непроизвольно происходит, когда пытаешься локализовать источник звука) изменить звуковую картину?
Разбираемся в виртуальном 7.1 на примере HyperX Cloud Revolver S