Слышал звон, знаю где он: делаем объёмный звук в наушниках на Windows

В этом странном окаянстве -
Как живу я? Чем дышу?
Шум и хам царят в пространстве,
Шумный хам и хамский шум.
-- И. Губерман

Введение

В этой статье мы настроим объёмный звук в наушниках в любых приложениях через создание виртуальной звуковой карты. Аранжировка для мыши и двух бубнов.

Если в наушниках слушать музыкальные записи постарее, или играть в игры, часто можно наткнуться на неприятный эффект, когда звук в одном ухе есть, а в другом нету. В реальности, то есть без наушников, так практически не бывает: звук всегда долетает до всех ушей, сколько у вас есть. Чтобы убрать эффект, ещё в прошлом веке придумали усилители с функцией crossfeed: в каждый канал отдельно подмешивается ослабленный сигнал из другого канала. Это позволяет убрать неестественные ощущения, но приводит к частичной потере чёткости позиционирования.

В компьютерную эпоху метод смог пойти дальше. Наука изучила, каким именно образом мозг человека отличает звук, идущий спереди, от звука, идущего сбоку или сзади. Для слушателя в наушниках можно точно воспроизвести эту разницу, задав тем самым ощущение направления к источнику звука хотя бы в горизонтальной плоскости. Восприятие таких сигналов строго индивидуально: для одних работает лучше, для других — хуже. Кроме того, мозг должен привыкнуть к частотным «подсказкам» в течении нескольких часов. Поэтому плохо работает объёмный звук в наушниках, который встроен в игры: алгоритм везде разный, и когда меняешь игру, нужно привыкать заново.

Вот демонстрация объёмного звука. Слушать в наушниках, выключив всякие улучшатели.

Однако, когда всё работает, такая система позволяет определять направление звука даже лучше, чем колонки 7.1 (которые часто подвержены помехам от помещения). Ещё этот эффект повышает комфорт при прослушивании музыки, в которой звукорежиссёр думал только о колонках и слишком сильно разнёс инструменты по каналам.

Предлагаемый метод имеет режим объёмного звука для стереоколонок, но работает он так себе.

Требования

Нам понадобятся:

  • Windows 10 / 11. При написании статьи я всё тестировал под Windows 11. Под 10 вроде должно работать, но может понадобиться бубен №2.

  • Звуковая карта. В идеале — многоканальная. Если карта поддерживает только стереорежим, понадобится бубен №1. Ещё очень нужна поддержка ASIO — без него работать будет, но с ощутимой задержкой по времени.

  • Наушники — почти любые. Закрытые работают лучше открытых, наушники с задранными басами могут сломать эффект.

Используется бесплатное ПО:

  • VoiceMeeter — создание виртуальной звуковой карты, только для бубна №1.

  • EqualizerAPO — фильтрует звук, создавая разнообразные эффекты. (Аккуратно, при поиске на первом месте — подозрительный сайт)

  • HeSuVi — Плагин к EqualizerAPO, создающий объёмный звук.

  • Virtual Audio Cable — создание второй виртуальной карты, только для бубна №2.

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

Альтернативы

В навороченных звуковых картах такая функция бывает встроенная. Например, в Creative она очень хорошая. Плюсом является отсутствие бубнов, минусом — меньше настроек. Но всё равно рекомендую начать с таких функций, если есть возможность.

Компания Ryzer предлагает платное ПО, создающее виртуальную звуковую карту. Работает хорошо и без бубна, но платное.

Наконец, в Windows есть своя встронная система под названием Spatial Audio. Имеет бесплатный вариант и два платных. Все их объединяет то, что клиентское приложение должно явно поддерживать эту систему, а так же они не работают со стереозвуком.

Изучаем звуковую карту

Нет ничего поганей, чем объяснять словами как пользоваться гуями, поэтому читайте внимательно. Пропустите одну мелочь — ничего не заведётся.

2929734c2fb54798c75160653b5b0efd.png

Первым делом нужно точно знать, умеет ли ваша звуковая карта многоканальный звук. Для этого выполняем команду mmsys.cpl. (Напоминаю, Win+R) В появившемся диалоге нужно найти свою звуковую карту и нажать кнопку Configure. Откроется окно со схемой каналов. Если там есть 5.1 или 7.1 — включаем и радуемся, пропускаем раздел про бубны и сразу переходим к установке EqualizerAPO. Если только стерео — следуем дальше. Кстати, пока окно открыто, нажмите там же кнопку Properties и переключите карту в режим 24bit, 48000Hz.

Бубен №1 — VoiceMeeter

292f2b62353d6b01a269215fe9b44441.png

Для работы HeSuVi требуется многоканальная звуковая карта, причём сам он фильтрует многоканальный звук, оставляя только стерео в основных каналах. Если таковой карты нет, надо сделать виртуальную. Для этого устанавливаем VoiceMeeter и перезагружаем систему. Теперь запускаем его основное приложение (из меню Пуск), в нём находим кнопку Menu и проставляем галочки у следующих пунктов: Run on Windows startup, System Tray, Shortcut Key → Hook Volume Keys for A1. Теперь чуть ниже жмём кнопку A1 и в списке выбираем фактическую звуковую карту. Лучше ASIO, иначе KS, на плохой случай WDM. Запомните, А1 — так в VoiceMeeter называется реальная звуковая карта.

d5b63f0647a805168e7ae89e369fccb7.png

Снова открываем mmsys.cpl и видим 2 новых звуковых карты: VoiceMeeter Input и VoiceMeeter AUX Input. Заходим в свойства обеих и выставляем режим 24 бит 48000Гц. Если что-то поменяли — перезагружаемся.

Теперь нажимаем хоткей Win+Ctrl+V и видим список звуковых карт. Выбираем в качестве основной системной звуковухи VoiceMeeter Input. Вообще, следите внимательно за именами, потому что авторы Windows и VoiceMeeter не сошлись в том, что считать вводом, а что выводом.

Возникает нюанс с громкостью. Громкость в трее — это громкость основного системного устройства. Теперь это виртуальная карта, а её громкость всегда должна быть 100%. Поэтому возможность управлять громкостью из трея мы теряем. Остаётся возможность управлять громкостью через клавиши на клавиатуре (но без всплывающей полоски) или из окна VoiceMeeter. Ну и самый правильный вариант — если у вас внешняя звуковая карта с аппаратной крутилкой. Тогда программную громкость ставим на 100 или 50 и крутим крутилку.

Теперь проверяем. Открываем в браузере любой Youtube latency test, например этот. Видим прыгающий шарик. Каждый раз, когда он отскакивает, должен быть щёлкающий звук. А в окне Voicemeeter должны прыгать показатели громкости. Если звука нет совсем, проверяем внимательно все настройки и все громкости.

1b2f63747cad3b1430d082977036b539.png

Если звук есть, но с ощутимой задержкой, то нужно подуменьшить размеры буферов, через которые проходит звук. Их два. Первый настраиваем из окна VoiceMeeter, Menu → System Settings. Откроется окно с параметрами. В середине будет список Buffering по протоколам. Но сначала нюанс. Если вы используете ASIO (а вам следует), то чуть выше вы увидите поле Out A1 Main Device, а под ним название вашей звуковой карты. Так вот, если щёлкнуть по этому названию, будет запущено окно конфигурации ASIO от драйвера звуковой карты. Оно может быть ReadOnly, тогда закрываем. А может содержать настройки буфера ASIO. Разобравшись с этим окном, возвращаемся к параметрам Buffering и выбираем то, какой протокол мы используем для A1. Нужно выставить значение как можно меньше, но если оно слишком мало, то звук начнёт похрюкивать как винил, а потом конкретно жужжжать. Начинать искать стоит от таких значений: 64 для ASIO внутренней карты, 256 для ASIO, 512 для остальных. Часто ASIO по умолчанию стоит в очень большое значение. Подбираем размер, одновременно слушая музыку, чтобы не было никаких искажений. Заодно проверяем, чтобы частота везде была 48000.

b2e8c58c5597b992f538fdfffc7080ac.png

Второй буфер настраиватся отдельно. В меню пуск находим Virtual IO Control Panel. В меню Latency подбираем значение, начать стоит с 3×512. Выбрав значение, сохраняем его, выбрав то же самое значение в меню Option. Не запутайтесь с умножением только, 3×512 это 1536. Когда всё проверите, запустите так же из меню пуск Virtual AUX IO Control Panel и введите туда то же значение.

Ура! Готово! Перезагружаемся ещё раз и тщательно тестируем звук. Yt, PH, VK, фильмы, музыка, и особенно игры и видеоконференции — нигде не должно ни хрюкать, ни отставать. Любые проблемы на данном этапе нужно выявить и решить, чтобы потом не гадать какой из компонентов в цепочке портит малину.

Да, если вы работаете со звуком или ещё для чего-то вам нужен был ASIO — установите эти программы использовать ASIO с VoiceMeeter AUX Input. Тогда на них не будут влиять наши объёмные эффекты. VoiceMeeter удваивает latency физического аудиоинтерфейса, что не страшно для всего, кроме прямого мониторинга.

Всё, бубен №1 закончен.

Установка EqualizerAPO

3e2f5cf3298e4c4f85833918a2bb3a8f.png

Скачиваем EqualizerAPO и ставим. Во время установки нам покажут список звуковых карт и спросят, на какие из них ставить. Ставим галочку только на Output A1, которая должна быть в самом верху списка. Перезагружаем. Снова проверяем звук.

9ef9c344375851b79ad36518e928ec6c.png

Теперь открываем из меню пуск приложение Configuration Editor (не путать с Configurator). Появится окно с разными фильтрами в квадратных панелях. На одном из них будет крутилка громкости Preamplification. Включаем музыку, и убеждаемся, что эта громкость работает. Все остальные фильтры удаляем, нажимая кнопочки «Минус» на них. Там же убеждаемся, что наверху написано Device: Output A1 — Voicemeeter, Channel configuration: From device (7.1)

Бубен №2

Раньше был баг между EqualizerAPO и VoiceMeeter. Заключался в том, что до установки EqualizerAPO звук был чистый, а после — начинал хрюкать. Причём разработчики показывали пальцами друг на друга и не исправляли его. Потом баг куда-то ушёл. А значит, может и вернуться. Рассказываю, что делать, если этот баг у вас есть.

Устанавливаем Virtual Cable. В системе появляется ещё одна звуковая карта Virtual Cable A. Настраиваем её основной вместо VoiceMeeter-овской. Так же настраиваем частоту, число каналов, размер буфера. Открываем VoiceMeeter, в левой части жмём на слово Hardware Input 1, в списке выбираем что-то вроде KS: Virtual cable. Так же смотрим, чтобы кнопка А1 под ним светилась. Проверяем звук, теперь должно идти чисто. Из меню пуск открываем Configurator (не Configuration Editor) и ставим галочку только на Virtual Cable A.

Перезагружаем и снова проверяем звук. Теперь крутилка громкости из Configuration Editor должна работать.

Устанавливаем HeSuVi

Закрываем Configuration Editor (важно!)

А дальше — вы не поверите — просто берём и устанавливаем HeSuVi. Никаких заковык. HeSuVi добавит программу в меню пуск и ещё одну плашку в окно ConfigurationEditor, которая собственно и делает преобразование объёмного звука. Как оно работает, рассказывать не буду, и так много всего.

9eca64bcfedd684c674d117ff39ef819.png

Через программу в меню пуск звук настраивается. На первой вкладке есть в двух списках разнообразные пресеты. Галку Upmix Stereo лучше выключить, она делает стереозвук громче изначально объёмного. На третьей вкладке слева есть комбобокс Virtualize который можно переключить на Crossfeed или вообще временно выключить преобразования, выбрав Stereo Mix.

Один из пресетов, dvs, предназначен для стереоколонок, а не наушников.

Ну вот и всё.

© Habrahabr.ru