PDA

Просмотр полной версии : Как вернуть качественный звук в Windows 7 — побитовый вывод, аппаратные эффекты (EAX и пр.)



banana
08.03.2011, 15:31
О звуковых подсистемах

Windows XP

Тут схема звуковой подсистемы примерно следующая:
http://audiophilesoft.ucoz.ua/articles/hq_pc_sound/xp_audio_scheme.png

В данном случае через интерфейс DirectSound ПО имело прямой доступ к аппаратным ресурсам звуковой карты — микширование, преобразование частоты дискретизации, различные эффекты (включая 3D позиционирование) — в общем, всё, что было необходимо, как для музыки/фильмов, так и для игр.
Конечно, были свои проблемы, в частности с микшером Windows (неточная регулировка громкости, принудительная некачественная передискретизация всего и вся до 48 кГц), но они вполне легко обходились с помощью Kernel Streaming (тот самый поток, идущий мимо kmixer), а иногда даже с помощью хороших драйверов (у Creative например таковые появись только в линейке X-Fi. На аудиокартах Audigy микшер ведет себя не вполне адекватно, но, при желании, справиться с этим не сложно).


Windows Vista, 7

И вот, жили наши энтузиасты-звукари, горя не знали, но тут подоспела новая ОС от Microsoft, которая конечно же обязана была содержать кардинальные изменения (и не так уж важно, в какую сторону).
Таким образом, в рамках новой концепции абстракции от оборудования, Windows Vista, кроме всего прочего, получила полностью переработанную подсистему ввода/вывода звука. И конечно же, переработали её не самым лучшим образом.
Вот, какой вид она приняла в этот раз:

http://audiophilesoft.ucoz.ua/articles/hq_pc_sound/Vista-7_audio_scheme.png

API — Application Programming Interface
APO — Audio Processing Object
CPT — Cross Process Transport
KST — Kernel Streaming Transport

Теперь поясню. Суть такова: все программы, заточенные под вывод на DirectSound и ничего не знающие о новом интерфейсе, подключаются к WASAPI в общем режиме (WASAPI Shared), далее происходит следующее:
Составляющие WASAPI (используя только ресурсы центрального процессора), выполняют все нужные (и не очень) преобразования:

1. Приведение звуковых потоков от разных приложений к одному виду (указанному в настройках Windows) — т.е. к одному количеству каналов, частоте дискретизации, глубине квантования.
2. Микширование потоков.


Плюс к этому надо добавить возможность наложения в процессе обработки программных эффектов (алгоритмы которых заложены в драйверах звуковой карты). Например, для звуковых карт Creative X-Fi есть убогая эмуляция эффекта CMSS-3D.
Качество всех этих обработчиков, само собой, не самое высокое.
Далее всё это отправляется через Kernel Transport на звуковую карту.
Теперь давайте попытаемся объективно оценить преимущества и недостатки новой системы:

+ базовые возможности обработки для звуковых карт не умеющих обрабатывать звук «своими силами»
+ поддержка на входе практически любого формата аудио — многоканальное аудио с частотой дискретизации до 192 кГц и глубиной квантования до 32-bit float
+ повышенная стабильность (спорное утверждение, в принципе)

— принудительный некачественный ресемплинг
— микширование каналов без эффектов окружения (или же они очень примитивны)
— сужение динамического дипазона (особенно в режиме 16 бит)
— отсутствие доступа к аппаратному DSP, т.е. потеря всего его функционала, включая эффекты EAX в играх (в т.ч. и на картах, где EAX эмулировался программно — так как в WASAPI такого понятия даже нет нет)
— щелчки, хрипы и прочие последствия связанные с использованием ресурсов ЦП.

Как видно, больше всего не повезло компьютерным меломанам и геймерам.
Люди же, не особо интересующиеся тем, что происходит со звуком на пути к звуковой карте — возможно даже получат определенное улучшение (хотя, опять же, им скорее всего всё равно — лишь бы работало)
А теперь, о том как преодолеть большинство из вышеперечисленных проблем, ибо, к великому несчастью, с выходом так любимой многими Windows 7, Microsoft никакой революции в плане звука нам не устроила.


Меломанам: точный вывод звука

1. Как я писал выше, большинство приложений для вывода звука в Windows 7 (хотят они того, или нет) используют режим WASAPI Shared. Но есть и другой режим — WASAPI Exclusive. Если руководствоваться блок-схемой, то в этом режиме отбрасывается всё, что лежит между Application Programming Interface и Kernel Streaming Transport — грубо говоря, звук идет непосредственно от приложения через интерфейс WASAPI на звуковую карту.
Но надо сделать замечание: так как в этом режиме отключен микшер WASAPI, а к микшеру звуковой карты доступа всё равно нет (ибо нет DirectSound), при использовании приложением эксклюзивного режима, воспроизведение любого другого источника через WASAPI становится невозможным.
Но, так или иначе, мы получаем по-битовый вывод аудио на звуковую карту.

2. Есть и другой способ. Если ваша звуковая карта имеет родной драйвер ASIO — вам крупно повезло. ASIO функционирует совершенно отдельно от WASAPI, так что, при прослушивании музыки системные звуки не будут отключаться — потоки ASIO и WASAPI будут микшироваться самой звуковой картой.
Вывод: если ваш драйвер ASIO не вызывает сомнений, используйте его.
Да, чуть не забыл — ASIO4ALL использовать нежелательно — как и Kernel Streaming, в этой ОС он работает очень нестабильно (судя по всему, из-за того, что другие звуки, идущие через WASAPI, периодически блокируют Kernel Transport).

Теперь непосредственно к делу.

Конечно же, для прослушивания музыки я рекомендую foobar2000 (http://www.foobar2000.org/download) с плагином ASIO Output (http://www.foobar2000.org/components/view/foo_out_asio) или WASAPI output support (http://www.foobar2000.org/components/view/foo_out_wasapi) — ни за что другое ручаться я не могу.

Любителей AIMP я разочарую — WASAPI Exclusive не предполагается даже в AIMP3 beta (только Shared), а ASIO в нем пока что сильно хромает (не умеет выставлять правильное количество каналов вывода, что приводит к нехорошим результатам).

Пользователям Winamp могу предложить плагины ASIO output Plugin (http://www.winamp.com/plugin/asio-output-plugin/156466) или даже такое: OpenAL Output (http://www.winamp.com/plugin/openal-output-1-0-0/221767) — кстати, еще один способ обхода WASAPI (видно из блоксхемы).


Для кинолюбителей: о видеоплеерах

C видеоплеерами ситуация практически аналогичная. Нам необходимо вывести звук на карту в первозданном виде. Особенно это важно, если вы хотите выполнить преобразование многоканального звука в стерео с использованием аппаратных эффектов вроде CMSS-3D в Creative X-Fi (объемное звучание в наушниках или стерео колонках). Для этого звук должен поступить на звуковую карту в многоканальном виде. Но вот беда: WASAPI в общем режиме преобразовывает каналы до кол-ва указанного в настройках Windows. Но даже если вы укажите там, скажем, 5.1, — этот параметр синхронизируется с настройками драйвера звуковой карты, и DSP не будет преобразовывать звук — так как сигнал на входе соответствует по кол-ву каналов настройкам. Т.е. тут принцип таков: в настройках драйвера звуковой карты должна стоять реальная конфигурация подключенного устройства воспроизведения (наушники, АС), а звук на карту должен поступать не измененным.
И так, тут нам опять понадобится WASAPI Exclusive. Я бы посоветовал использовать Media Player Classic HomeCinema (http://mpc-hc.sourceforge.net/) в связке с DirectShow фильтром ReClock (http://forum.slysoft.com/forumdisplay.php?f=85) (только для 32-битного MPC), который, кроме всего прочего, умеет выводить звук на WASAPI Exclusive.

Геймерам: трехмерное позиционирование, EAX

Да, введение новой звуковой подсистемы, несомненно, вызвало негодование у многих геймеров, в т.ч. у счастливых обладателей высокотехнологичных звуковых карт от Creative.
И так, для тех, кто, может быть, еще не в курсе: выход найден — OpenAL. Эта библиотека имеет доступ ко всему, что касается аппаратных эффектов трехмерного позиционирования источников звука и т.н. Environmental Audio Extension — вплоть до версии 5.0.
Кроме того, что продвинутые разработчики таких игр, как например S.T.A.L.K.E.R: Call of Pripyat построили движки своих игр на OpenAL, для остальных игр, рассчитанных на DirectSound, было разработано две программы, преобразующих вызовы DirectSound в OpenAL:

* Creative ALchemy (http://files2.europe.creative.com/manualdn/Applications/AVP/11802/0x8430E4A9/ALMY_PCAPP_BETA_LB_1_43_06.exe) (последняя на момент написания статьи версия) для карт Audigy и X-Fi от Creative
* и даже 3D SoundBack (http://www.realtek.com.tw/downloads/) для карт Realtek HDA, которые, кстати говоря, поддерживают EAX 2.0 (хоть и программно)


Выводы

И так, вот вроде бы мы имеем всё, чего нам так не хватало сразу после перехода с Windows XP на Windows 7. Конечно, не без лишней мороки, но, что делать — такие уж задачки подкинула нам фирма Microsoft.

Источник: http://habrahabr.ru/blogs/sound_and_music/115092/

banana
08.03.2011, 15:50
Пару комментариев от себя. Всё же меломаны и звукачи используют профессиональные звуковые карты и в основном MacOS, поэтому большинство им ничего проделывать не будет нужно. По кинолюбительству сказать ничего не могу, не отношусь к этой группе людей, но всё же я считаю что удобнее смотреть кино на FullHD телевизорах или проекторах с хорошей звуковой системой, которая не требует каких-то настроек на аппаратной или программном уровне. Для гейминга - у меня Realtek HDA, но устанавливать 3D SoundBack я не стал, поскольку те игры, в которые я играю не поддерживают ни OpenAL, ни EAX. Дорогие варианты геймерских ушей подключаются по USB и имееют встроенную звуковую карту, которая также не требует настроек. Так что к сожалению, статья для меня в практическом плане оказалась бесполезной, возможно кому-нибудь она поможет.

Steph
08.03.2011, 17:44
Спасибо, интересная статья.

aleks_nsk
08.03.2011, 23:04
А мне семёрка сразу не понравилась, два раза ставил и сносил, сижу на старушке XP SP3 и горя не знаю

Metalmih
09.03.2011, 06:23
Вот у меня есть смежный вопрос, всё хотел его задать, вот и тема подвернулась :)

Панель управления-звук-динамики-свойства
http://s60.radikal.ru/i169/1103/13/a2fa1b00fad4.jpg

По умолчанию стоит как для CD, карта ESI Juli@, 24-битная. Пробовал ставить 24-бит, но при нажатии "проверка" комп вылетает в синий экран. Мне интересно, что лучше должно стоять в этой настройке, если я занимаюсь звукозаписью и сведением?

Такая же панель в свойствах записи. Записываю в кубе всегда в 24-бит, но в свойствах стоит 16

banana
09.03.2011, 16:00
комп вылетает в синий экран

Огласи ошибку, которая написана на синем экране. Или же выложи сюда если есть файлы из C:\Windows\Minidump . Скорее всего проблема с драйверами

Metalmih
10.03.2011, 06:46
Я Не хочу нарочно насиловать свой комп, опять вызывая синий экран. А пробовал уже довольно давно, после этого были уже другие ошибки, так что рыться в Minidump, искать нужную ошибку... К тому же, драйвер на в7 у моей карты только один, и я ничего не смогу с ним сделать.

Меня интересует лишь вопрос как должно лучше стоять в настройках, а оттуда уже оталкиваться

Steph
10.03.2011, 09:58
Metalmih, попробуй обновить windows, драйвера, это тоже может помочь. А в настройках звуковой карты устанавливай те параметры что и в проекте. Возможно bluescreen был потому что была включена какая то программа использующая аудио карту, с уже установленными параметрами и такое переключение рестартнуло комп. Попробуй изменить настройки в safe mode.

Metalmih
10.03.2011, 10:07
ок, попробую в safe mode


попробуй обновить windows, драйвера

windows пиратскую обновлять не осмелюсь, драйвер, как я писал, всего лишь одна версия

banana
10.03.2011, 14:01
windows пиратскую обновлять не осмелюсь
Чем активировал? Множество активаторов поддерживают офф. обновления, если что можно устанавливать в ручную всё кроме 971033

Metalmih
11.03.2011, 05:31
Активировал либо Windows Loader, либо RemoveWAT, уже не понмню - просто у меня их два есть.
Вручную это значит можно скачать отдельные пакеты обновлений? На оф.сайте?

banana
11.03.2011, 19:09
Активировал либо Windows Loader, либо RemoveWAT, уже не понмню - просто у меня их два есть.
Вручную это значит можно скачать отдельные пакеты обновлений? На оф.сайте?

Нет же, через центр обновления Windows ты можешь выбирать пакеты какие хочешь установить. RemoveWAT не активирует, а блокирует активацию, так что 971033 ставить нельзя, Windows Loader скорее всего активирует, так что можно ставить обновления, по крайней мере всегда даже если слетит активация можно будет откатить 971033 и использовать хоть тот же RemoveWAT

Metalmih
12.03.2011, 05:32
Ну тогда попробую как появится желание)

Metalmih
12.03.2011, 07:09
http://s57.radikal.ru/i156/1103/14/0a4a160fc27f.jpg

почему-то. может, из-за медленного инета (например, иногда Adobe Flash не может обновиться)

banana
28.04.2011, 12:33
http://s57.radikal.ru/i156/1103/14/0a4a160fc27f.jpg

почему-то. может, из-за медленного инета (например, иногда Adobe Flash не может обновиться)

Извиняюсь за очень поздний ответ, но зайди в "настройки параметров", возможно там стоит "не проверять наличие обновлений"

Metalmih
29.04.2011, 05:31
Ничего не изменилось.

Да ладно, не нужны мне эти обновления :)

banana
02.05.2011, 19:18
Ничего не изменилось.

Да ладно, не нужны мне эти обновления :)

Странно что-то, ну как хочешь, я бы повозился.