Что?Данное хауту рассказывает, как с помощью несложной конфигурации ALSA заставить
басы из фронтальных каналов подмешиваться в сабвуфер.
Зачем?На первый взгляд название название хауту вводит в заблуждение: ведь режим 5.1 и так предполагает вывод низких частот через сабвуфер. Но по умолчанию через сабвуфер выводится только содержимое LFE-канала источника. Басы же из фронтальных каналов, центрального канала и тыловых каналов выводятся через них самих и на сабвуфер не передаются. Однако зачастую бывает так, что у недорогих акустических систем формата 5.1 сателлиты не обладают низкочастотными динамиками. Поэтому получается, что при просмотре фильма со звуком 5.1 такая акустическая система сносно воспроизводит низкочастотные спецэффекты (взрывы, удары), но не воспроизводит низкочастотные ноты фоновой музыки, которая обычно записана только в передних каналах.
Для кого?Данное хауту предназначено для тех, кто
не использует PulseAudio в Ubuntu. Возможно в PulseAudio это делается как-то проще.
Как?С помощью переопределения реального устройства surround51 своим собственным виртуальным.
Необходимо добавить в ваш конфигурационный файл ALSA (~/.asoundrc, если его нет, то его нужно создать) следующую секцию:
pcm.!surround51 {
type plug
slave.pcm cards.pcm.surround51
slave.channels 6
slave.format "unchanged"
ttable {
0.0 1
1.1 1
2.2 1
3.3 1
4.4 1
5.5 1
0.5 0.5
1.5 0.5
}
}
Секция озаглавлена
pcm.!surround51. Восклицательный знак перед названием устройства вывода означает "переопределить" (использовать вместо существующего).
Параметр
slave.pcm указывает на дочернее устройство, через котрое фактически будет выводится звук. Здесь указано "старое" устройство surround51.
Параметр
slave.channels указывает, сколько каналов у дочернего устройства (их шесть - пять сателлитов и сабвуфер).
Параметр
slave.format указывает на формат аудиоданных, которые будут приходить на дочернее устройство.
Внимание: если этот параметр не указать, некоторые плееры (например vlc) откажутся работать с нашим виртуальным устройством. Поскольку нам преобразование формата не нужно - ставим ключевое слово
"unchanged" - "без изменений".
Параметр
ttable указывает таблицу маршрутизации звуковых каналов от нового виртуального устройства к реальному устройству. Формат каждой записи таков:
X.Y Z
X - номер канала виртуального устройства.
Y - номер канала реального устройства.
0 - левый передний
1 - правый передний
2 - левый задний
3 - правый задний
4 - центральный
5 - сабвуфер
Z - дробное число от 0 до 1, определяющее количество звука из канала
X, попадающего в канал
Y.
Таким образом, согласно нашей таблице маршрутизации, мы отправляем все каналы виртуального устройства в каналы реального устройства без изменений (первые шесть записей), а также отправляем в сабвуфер половину левого (0) и половину правого (1) каналов (две последние записи).
По желанию можно также отправлять в сабвуфер центральный и задние каналы.
Такая схема годится, если в вашей акустической системе на сабвуфере стоит хороший фильтр низких частот. Ибо если это не так, то из сабвуфера вы услышите весьма неприятную какофонию, включающую средние и возможно даже высокие частоты. Чтобы этого избежать, можно подключить программный фильтр низких частот. Однако привести рабочий .asoundrc для этой конфигурации я пока затрудняюсь.