Сегодня акустика формата «5.1» (5 каналов + сабвуфер) уже не является чем-то диковинным и многие геймеры, а также любители DVD и аудио если еще не приобрели многоканальную акустику, то всерьез об этом подумывают.
В этом материале я приведу несколько практических рецептов того, каким образом в отсутствии специального аппаратного декодера организовать звучание обычного двухканального аудио во всех пяти колонках (не забудем, конечно, и сабвуфер). Советы основаны на информации, накопленной при попытках самостоятельно решить поставленную задачу, и никак не претендуют на объективность или единственность. Не исключено, что этот материал может оказаться полезным также и тем, что представленные в нем практические рецепты описывают некоторые малоизвестные инструменты, способные помочь при решении других задач, связанных с аудио.
Сначала о сути проблемы. Акустика формата «5.1» – это пять абсолютно независимых каналов, каждый из которых может воспроизводить отдельный сигнал. По большому счету, попытка воссоздать звучание пяти независимых каналов, имея лишь информацию о стерео картине – это попытка растащить два куска сыра по пяти бутербродам. Ни один способ не позволяет и никогда не позволит получить полноценное пространственное звучание, имея изначально лишь стерео. Однако слушать любимую музыку лишь через два канала на многоканальной акустике со спокойными нервами под силу лишь тем, в ком «дух экспериментаторства» крепко спит.
I. Решаем «не напрягаясь»
Конечно же, самый простой и естественный метод решения поставленной задачи - найти какой-нибудь аудио проигрыватель, который способен воспроизводить стерео через «5.1» своими внутренними средствами. Именно это решение проблемы пришло мне, как и любому другому пользователю, в голову первым. Перебрав и изучив множество существующих программ-плееров, пришлось констатировать необычайную скудность имеющихся решений подобного рода. Все что удалось найти – это несколько устаревших и неудобных плаг-инов к WinAMP 2.xx (один, например, основан на использовании библиотек от уже не существующей компании Aureal), а также программу J. River Media Center (1). Последняя, хоть и имеет свои встроенные средства воспроизведения стерео на многоканальной акустике (JRSS), однако удовлетворить запросам не может в виду просто нулевой их конфигурируемости. Конечно, воспроизводить стерео на многоканальной акустике может любой современный DVD -проигрыватель со встроенной системой Dolby Prologic, однако, во-первых, и в этом случае возможность управления параметрами звучания почти отсутствует, а, во-вторых, пользоваться DVD -плеером, чтобы слушать музыку - по меньшей мере странно.
Безусловно, не исключено, что есть и другие незамеченные мной программы, в которых искомая функция реализована лучше или хуже.
II. Есть вариант!
Отчаявшись найти готовое решение задачи, пришлось искать другие пути. Среди большого числа бесплатных программ обнаружился замечательный DirectShow фильтр MatrixMixer (2). MatrixMixer предназначен для разложения любых стерео записей на любое число каналов (путем «ап-микса») в режиме реального времени. Фильтр может быть подключен к любой программе, способной работать с DirectShow фильтрами, и удобен тем, что является полностью настраиваемым.
Устанавливаем MatrixMixer в систему. Устанавливаем первый попавшийся проигрыватель видео (о том, почему первым попавшимся оказывается именно видео проигрыватель, скажу позже), например Light Alloy (3). Загружаем в него желаемый аудио файл и нажимаем F 9 (клавиша вызова диалога настройки DirectShow фильтров). В открывшемся списке участвующих в декодировании загруженного файла фильтров, при условии успешной установки, должен участвовать и MatrixMixer. Двойным кликом раскрываем окно настройки MatrixMixer (4) (пример окна на рис. 1).
Вкратце, настройка фильтра состоит в следующем. Основным органом настройки является матрица микширования. Входной сигнал из каждого канала (L – фронтальный левый, R – фронтальный передний правый, C – центральный, SL – тыловой левый, SR – тыловой правый, LFE – низкочастотный) микшируется в заданной пропорции с остальными каналами и подается на выход в соответствующий канал (результирующие каналы отмечены как X '). Например, чтобы смешать в одинаковой пропорции сигналы левого и правого каналов, а результирующий сигнал вывести через центральный канал, нужно указать значение 0.5 в двух ячейках матрицы, на пересечении строки C ' и столбцов L и R. Список «Speakers» позволяет указать конфигурацию имеющейся у вас акустики. Включение параметра «Auto matrix» заставит матрицу автоматически обновляться при изменении параметров. Подробное описание настройки фильтра можно прочесть на страничке проекта.
Внимательно настроенный фильтр MatrixMixer обеспечивает прекрасное звучание через любое количество каналов. Для создания «взвешенного», сбалансированного звучания не забудьте также отрегулировать уровень центрального и задних каналов относительно передних.
Фильтр MatrixMixer является очень удобным инструментом и во многом решает поставленную перед нами задачу. Однако в истории с использованием MatrixMixer есть один подводный камень, из-за которого был выбран именно видео плеер. Дело в том, что в основном только лишь видео проигрыватели позволяют сегодня подключать DirectShow фильтры (Light Alloy , BSPlay , Sasami и другие). Подавляющее большинство аудио проигрывателей (таких, как, например, WinAMP , FooBar , 1 by 1 и другие) пока не позволяют работать с фильтрами DirectShow. Единственным известным мне аудио проигрывателем, способным подключить MatrixMixer , оказался плеер Juke (5).
Как же быть в случае, если отказаться от использования любимого проигрывателя вы не хотите, но и идея использования MatrixMixer вам оказалась очень по душе? В этом случае есть что предпринять. Способ, который я сейчас изложу, является искусственным и в некотором смысле экспериментальным. Тем не менее, он, во-первых, позволяет подключить MatrixMixer к почти любому проигрывателю, а, во-вторых, являет собой универсальную методологию подключения фактически чего угодно к чему угодно.
Для подключения MatrixMixer к плееру «X», не поддерживающему подключение DirectShow фильтров, нам нужны две программы: Virtual Audio Cable (6)(VAC) и GraphEdit (7).
Название программы VAC («Виртуальный аудио кабель») точно объясняет ее назначение - программа является виртуальным аудио драйвером и создает мнимые источники и приемники аудио. Такая организация дает возможность перенаправлять аудио поток из одной программы в другую, минуя аппаратные звуковые тракты.
GraphEdit - это программа, графически отображающая схему (граф) декодирования и воспроизведения информации (в том числе аудио) в Windows. Смысл программы не сложно понять, если запустить ее и, зайдя в меню File -> Render Media File , загрузить какой-нибудь аудио или видео файл – не экране отобразится схема декодирования и воспроизведения этого файла. Действие графа можно проверить, запустив схему (это делается нажатием Enter). GraphEdit позволяет изменять параметры работы всех участвующих в схеме фильтров. Кроме того, программа дает возможность пользователю самостоятельно строить графы, а также просматривать графы программ, запущенных в других процессах системы.
После установки обеих программ в плеере «Х» выбираем в качестве устройства вывода аудио виртуальное устройство «Virtual Cable 1 Out» (таким образом, единственное, что требуется от плеера «X» - возможность выбора выходного аудио устройства). Теперь запустим GraphEdit и построим свой граф прохождения сигнала, включающий MatrixMixer. Для этого заходим в диалог «Graph» -> «Insert Filters», откуда последовательно добавляем на рабочее поле программы:
«Virtual Cabel 1 In» (из ветки «Audio capture sources»)
«MatrixMixer» (из ветки «DirectShow filters»)
Подходящее устройство вывода, например, «Default WaveOut device» (из ветки «Audio renderers»)
Теперь, закрыв диалог, соединяем выход «Virtual Cabel 1 In» со входом «MatrixMixer», а также выход «MatrixMixer» со входом «Default WaveOut device». Построение графа на этом завершено (см. рис. 2).
Таким образом, если обычный путь прохождения аудио потока из плеера к аппаратному выходу может быть изображен в виде верхней блок-схемы на рис. 3, то после осуществленного нами перенаправления сигнала через GraphEdit , путь выхода сигнала выглядит как на нижней блок-схеме рис. 3. Для изменения настроек MatrixMixer нужно зайти в свойства фильтра, доступные по правому клику на фильтре. Чтобы слушать аудио нужно включить плеер «X» в режим воспроизведения и запустить построенный в GraphEdit граф (нажтием клавиши Enter).
Чтобы каждый раз при желании послушать музыку не приходилось заново строить граф в GraphEdit , построенный однажды граф можно записать в файл (меню «File» -> «Save Graph As») и вывести иконку с файлом графа на рабочий стол. Тогда перед каждым запуском проигрывателя придется лишь вызывать этот файл и запускать GraphEdit.
Описанный способ пропускания сигнала через MatrixMixer вполне универсален и подходит не только для плееров, но и для множества других аудио программ, а программа VAC может оказаться полезной еще чаще, поскольку с ее помощью зачастую удается буквально подключить не подключаемое.
III. Аудио-экстрим
Наш следующий разговор пойдет о более серьезном варианте решения проблемы. Приведенный выше способ с использованием MatrixMixer , не смотря на свою элегантность, имеет один очень серьезный недостаток. Дело в том, реализованный в MatrixMixer метод увеличения количества звучащих каналов, основан всего лишь на нехитром микшировании в определенных пропорциях сигналов от двух имеющихся каналов. Оказывается, существует другой способ создания пространственного звучания из стерео, основанный на гораздо более серьезной методике, чем простое микширование.
Технология Ambisonics (8) явилась результатом работы Британских исследователей в 70-х годах. Несколько ученых, в частности, Michael Gerzon и профессор Peter Fellgett , успешно разработали технологию, которая позволяет очень точно доносить до слушателя оригинальное звучание за счет записи оригинального звучания специальными средствами. Технология реализует комплексный подход, обуславливающий способы записи и воспроизведения. В соответствии с этим подходом, запись живого звучания производится с использованием специальной аппаратуры, которая продуцирует четырехканальный сигнал (в специальном формате, названном «B - Format»), несущий информацию о звуковом поле в горизонтальном и вертикальном направлениях (9). Естественно, воспроизведение такого сигнала также требует наличия специального кодера/декодера. Интересно, что для правильной передачи сигнала при воспроизведении нужно лишь верно указать декодеру месторасположение используемых репродукторов (расположив их при этом почти по своему усмотрению). Необходимое количество репродукторов ограничивается лишь четырьмя. Надо заметить, что большинство современных технологий пространственного звучания не позволяют воссоздавать вертикальную составляющую передаваемого звукового поля.
Технология Ambisonics предусматривает возможность записи данных даже на двухканальных носителях данных (с использованием специальной матрицы кодирования), она не требовательна к количеству и расположению каналов, она позволяет создать полную перифонию, а не только лишь звучание по горизонтали, она во многом лучше и прогрессивней множества других современных технологий подобного рода. Однако по разным причинам технология Ambisonics сегодня фактически мертва. В настоящее время она поддерживается лишь энтузиастами и существует в виде некоторого количества (вполне рабочих) VST -модулей четырех-пяти летней давности, а также в виде отдельных выпущенных когда-то серийно аппаратных декодеров и 160 CD альбомов в формате Ambisonics.
Не смотря на явно минорный тон рассказа об Ambisonics , эта технология еще сослужит нам службу, по крайней мере, в этом материале. С помощью Ambisonics мы сейчас попробуем оттранслировать обычный стерео .WAV в шестиканальный. WAV (в формате «5.1») для его последующего кодирования, например, в .AC3 или DTS. Для этого нам понадобится:
программа Plogue Bidule (10) (http://www.plogue.com/download_form.php?file=PlogueBiduleInstaller.exe)
комплект VST плаг-инов (http://websound.ru/articles/software/stereo51 files/ambisonics_vst.zip) , включающий: кодер и декодер Ambisonics , процессор Ambisonics для изменения характеристик звукового поля, а также низкочастотный фильтр для генерации канала LFE.
Программа Plogue Bidule – это универсальный инструмент, представляющий собой модульную студию для работы со звуком. Работа с Bidule похожа не работу c GraphEdit – на рабочем поле программы из различных внешних и внутренних плаг-инов (в том числе VST) и модулей создается блок-схема прохождения аудио сигнала. Запустив механизм и регулируя настройки участвующих в схеме модулей, можно выполнять обработку звука, экспериментировать со звучанием или просто тестировать модули и их взаимодействие.
Порядок действий по преобразованию стерео .WAV в .WAV с шестью каналами формата «5.1» следующий.
Устанавливаем программу Bidule.
В папке с установленной Bidule находится папка VSTPlugins. В нее необходимо полностью распаковать упомянутый выше комплект VST плаг-инов.
Запускаем Bidule. Программа произведет поиск VST плаг-инов. Если на вашем компьютере есть другая программа, использующая VST плаг-ины, то Bidule может «подцепить» VST плаг-ины от нее. Если это произошло, то придется подкорректировать путь к плаг-инам с помощью меню «Edit» -> «Preferences». Обратите внимание: старт программы может оказаться достаточно продолжительным.
С рабочего поля программы удаляем все модули и начинаем строить свою схему.
С помощью диалога «Tools» -> «Palette» добавляем следующие модули:
«Audio file» -> «Player» -> «2 channels»
«VST» -> «Swiss Center» -> «BPan_e_gui»
«VST» -> «York Music dept.» -> «bfprocedit»
«VST» -> «gerzonic» -> «emigrator» (11)
«VST» -> «Unknown vendor» -> «HNM_filter» (12) (пять штук)
«Audio File» -> «Recorder» -> «6 channels»
Соединяем добавленные модули как показано на рис. 4
Обратите внимание на подключение модуля «Emigrator» к «Audio File Recorder». Шесть выходов «Emigrator» нумеруются с 1 по 5 (слева направо) и несут сигналы в последовательности: «центр», «левый передний», «левый задний», «правый задний», «правый передний». На вход «Audio File Recorder» сигналы подаются в последовательности (слева направо) 2, 1, 5, 3, 4. Это обусловлено тем, что выходной шестиканальный .WAV мы хотим получить в формате: «левый передний», «центр», «правый передний», «левый задний», «правый задний». Шестой канал (шестая нога «Audio File Recorder») является суммой низкочастотных составляющих ото всех пяти каналов, поэтому к ней все каналы подсоединены через низкочастотные фильтры «HNM _ Filter _ n» (этих фильтров, соответственно, пять).
Устанавливаем параметры модулей (двойной клик на соответствующем модуле):
В «BPan _ e _ gui» регулятор Left поворачиваем так, чтобы стрелка на нем указывала строго влево, регулятор Right – вправо.
В «bfprocedit» самый левый регулятор поворачиваем так, чтобы стрелка указывала на 30-35? левее центрального положения, остальные регуляторы должны быть повернуты стрелкой вверх.
В «emigrator» форматом акустической системы должен быть выбран «Pentagon» (пять каналов), а горизонтальный регулятор рекомендуется установить в крайнее правое положение. Обратите внимание, что вместо «Pentagon» можно выбрать другое количество каналов – все зависит от того, сколько каналов мы хотим получить на выходе.
В каждом из фильтров «HNM _ filter» нужно указать следующие параметры: Filter = 0.0, CutOff = 0.24 (соответствует частоте среза 83 Гц), Resonance , InAmp и OutAmp = 0.5, Slope = 0.0.
Синхронизируем воспроизведение и запись «Audio File Player» и «Audio File Recorder». Для этого в меню «Tools» выбираем диалог «Parameters», в котором слева выбираем «Audio File Player» -> «Playing», а справа – «Audio File Recorder» -> «Recording», и нажимаем кнопку Link.
Подготовка схемы завершена. Вы можете записать полученную схему в файл (через меню «File»). Теперь для преобразования желаемого стерео .WAV -файла в шестиканальный, нужно сначала запустить построенный нами механизм (это делается кликом на шестой слева иконке панели инструментов). Затем нужно открыть модуль «Audio File Recorder» и указать в нем имя выходного шестиканального .WAV -файла, после чего нужно открыть модуль «Audio File Player», загрузить в него желаемый входной .WAV -файл и нажать кнопку воспроизведения. По окончании воспроизведения (его прогресс отображается в виде шкалы с регулятором), можно остановить механизм программы. Если у вас все прошло успешно, то на выходе вы уже получили желаемый шестиканальный .WAV .
Полученным после преобразования шестиканальным файлом вы можете распоряжаться по своему усмотрению. В частности, его можно сжать в формат .AC3 каким-нибудь доступным кодером (например, Sonic Foundry Soft Encode).
На последок, несколько замечаний.
Использованные параметры модулей, участвующих в схеме преобразования, вы можете выбрать иными – поэкспериментируйте.
Частота среза низкочастотного фильтра зависит от характеристик используемого вами сабвуфера. В принципе, частота 80-85 Гц является оптимальной.
Полученный шестиканальный .WAV можно разделить на шесть отдельных файлов, например, с помощью программы BeSweet (http://dspguru.doom9.net/).
В процессе преобразования сигнала можно слушать выходной сигнал. Для этого нужно добавить какой-нибудь модуль из ветки «Audio devices» -> «Output» и подсоединить два его входа к выходам желаемого модуля (к сожалению, прослушивать все шесть каналов в Bidule одновременно нельзя).
Примечания:
1.http ://www.jrmediacenter.com
2. Автор программы: Александр Выговский, страничка: http://matrix-mixer.sourceforge.net/matrix_mixer_rus.html . Проект является ответвлением от проекта AC3 filter (http://ac3_filter.sourceforge.net/ac3_filter_rus.html)
3. Автор: Игорь Вапняр, страничка: http://www.video-soft.com/la/.
4. К сожалению, далеко не все программы позволяют добраться до диалога настройки DirectShow фильтров.
5. Разработчик плеера: Wolosoft , страничка: http://www.wolosoft.com/en/juke/.
6. Автор программы: Евгений Музыченко, страничка: http://spider.nstu.nsk.su/music/software/eng/vac.html
7. Разработчик программы: Microsoft Corp ., скачать можно по адресу: http://websound.ru/software/utils/graphedit.zip
8. http://www.ambisonic.net, http://www.ambisonic.net/pdf/ambidvd2001.pdf, http://members.tripod.com/martin_leese/Ambisonic/faq_latest.html
9. Пространственную звуковую картину, несущую информацию обо всех направлениях прихода звука (в частности, по вертикали) назвали перифонией .
10. Страничка программы: http://www.plogue.com/bidule/
11. Страничка плаг-ина: http://www.gerzonic.net
12.
Страничка плаг-ина: http://www.hnm-freeware.com
Эта статья не могла бы увидеть свет, если бы не помощь Валерия Прокопчука, Александра Выговского, а также других посетителей форумов WebSound.Ru и doom9.org.