Эти примеры показывают, как создать амбизонические плагины с помощью демонстрационных функций MATLAB ® более высокого порядка. Ambisonics является пространственным аудио методом, который представляет трехмерное звуковое поле с использованием сферической гармоники. Этот пример содержит плагин энкодера, функцию для генерации плагинов пользовательского энкодера, плагин декодера и функцию для генерации плагинов пользовательского декодера. Индивидуальная настройка генерации плагинов позволяет пользователю задавать различные амбизонические порядки и различные списки устройств для заданного амбизонического строения.
Амбизоническое кодирование является процессом разложения звукового поля на сферические гармоники. Матрица кодирования является количеством сферических гармоник, присутствующих в определенном положении устройства. В декодировании, согласующемся по режиму, матрица декодирования является псевдовращением матрицы кодирования. Амбизоническое декодирование является процессом восстановления сферических гармоник в звуковое поле.
Этот пример включает амбизонику более высокого порядка, которая включает традиционную амбизонику первого порядка. В амбизонике существует связь между количеством амбизонических каналов и амбизоническим порядком:
ambisonic_channels = (ambisonic_order + 1)^2
Например: Амбизоника первого порядка требует четырех аудиоканалов, в то время как амбизоника четвертого порядка требует 25 аудиоканалов.
Поддерживаются следующие соглашения
Канал ACN секвенирования
SN3D нормализации
азимут от 0 до 360 степеней
повышение от -90 до 90 степеней
Примеры амбизонического проекта поддерживают до амбизоники седьмого порядка с псевдоинвертным декодированием.
Ambisonic Устройства: Элементы и динамики
Амбизонические устройства делятся на две группы: элементы и динамики. Каждое устройство имеет аудиосигнал и метаданные, описывающие его положение и операцию. Элементы соответствуют многоэлементным массивам микрофонов, а динамики соответствуют массивам громкоговорителей для амбизонического воспроизведения.
Амбизонический энкодер применяет матрицу амбизонического кодирования к необработанному звуку из микрофонных элементов. Положение (азимут, повышение) и тип устройства микрофонных элементов наряду с желаемым амбизоническим порядком необходимы для создания матрицы амбизонического кодирования.
Амбизонический декодер применяет матрицу амбизонического декодирования к амбизоническому аудио для воспроизведения на динамиках. Положение (азимут, повышение) и тип устройства динамиков вместе с желаемым амбизоническим порядком необходимы, чтобы создать матрицу амбизонического декодирования.
Представление звукового поля
В порядок для захвата, представления или воспроизведения звукового поля с амбизоникой количество устройств (элементов или динамиков) должно быть больше или равным количеству амбизонических каналов.
В примере кодирования аудио, захваченное 32-канальным сферическим микрофоном массива, может быть закодировано до амбизоники четвертого порядка (25 каналов). В примере декодирования массив громкоговорителей, содержащий 64 динамика, сконфигурирован для амбизонического воспроизведения до седьмого порядка. Если содержимое воспроизведения является амбизоникой четвертого порядка, то, даже несмотря на то, что массив настроен на семнадцатый порядок, через систему реализуется только амбизоника четвертого порядка.
number_devices >= number_ambisonic_channels
Для энкодера, если количество устройств (элементов) меньше, чем количество амбизонических каналов, то аудио из позиций устройства (элементов) может быть представлено в амбизонике, но звуковое поле не представлено. Один или более аудиоканалов могут быть закодированы в амбизонику с целью позиционирования источников в амбизоническом поле. Каждый энкодер представляет интенсивность звукового поля, которое должно быть закодировано в заданном местоположении устройства (элемента).
Для декодера, если количество устройств (динамиков) меньше количества амбизонических каналов, устройства (динамики) не полностью воспроизводят звуковое поле в заданном амбизоническом порядке. Звуковое поле может быть воспроизведено в более низком амбизоническом порядке. Например, амбизоника третьего порядка, воспроизводимая на массиве динамиков с 10 динамиками, может быть реализована как система второго порядка (9 каналов) с дополнительным динамиком для воспроизведения. Каждый декодер представляет интенсивность амбизонического поля в заданном положении устройства (динамика).
псевдоинвертный метод декодирования
Существует много опций декодирования, в этом примере используется псевдообрачное декодирование, также известное как согласование режимов. Этот способ декодирования благоприятствует размещениям устройства обычной формы. Другие способы декодирования могут благоприятствовать размещениям устройств неправильной формы.
DeviceType
DeviceType для энкодеров включает или отключает кодировку устройства (элемента) для конкретного элемента. DeviceType для декодеров включает или отключает декодирование устройства (динамика) для конкретного динамика. Если вектор deviceType опущен, то для deviceTypes задано значение 1 (on). Цель устройстваType состоит в том, чтобы обеспечить гибкость заполнения входов энкодера или выходов декодера отключенными каналами для встраивания плагина амбизонического энкодера или декодера в окружение с фиксированным количеством каналов, такой как 8, 16 или 32-канальная аудиосистема.
Для примера: Амбизонический энкодер второго порядка с 14 элементами имеет 14 входов и 9 выходов. Если вы добавляете к энкодеру ещё два устройства (элемента) с deviceType 0 (off), то энкодер имеет 16 входов и 9 выходов. Амбизонический декодер четвертого порядка с 29 устройствами (динамиками) имеет 25 входов и 29 выходов. Если вы добавляете к декодеру еще три устройства (динамики) с deviceType 0 (off), то количество каналов становится 25 входами и 32 выходами.
Когда значение deviceType установлено на 0 (off), азимут и повышение для этого канала игнорируются; однако значение все еще необходимо. Если для типов устройств задано значение 0 (off), рекомендуется задать азимут и повышение 0 степеней.
audiopluginexample.AmbiEncoderPlugin
построен вокруг audioexample.ambisonics.ambiencodemtrx
и audioexample.ambisonics.ambiencode
функций. Количество устройств (элементов, подлежащих кодированию) является количеством входа каналов плагина энкодера. Амбизонический порядок определяет количество выходных каналов плагина энкодера.
audioexample.ambisonics.ambiencodemtrx
генерирует матрицу амбизонического энкодера из заданного амбизонического порядка и данного списка устройств. audioexample.ambisonics.ambiencode
применяет матрицу амбизонического энкодера к необработанному звуку, получая амбизоническое закодированное аудио. Форматирование ambisonic audio может быть задано с помощью audioexample.ambisonics.ambiencode
функция. Количество необработанных аудиоканалов должно равняться количеству устройств в матрице амбизонического энкодера.
Плагин энкодера наследует непосредственно от базового класса audioPlugin. Конструктор плагина вызывает audioexample.ambisonics.ambiencodemtrx
чтобы создать матрицу начального энкодера. Функция процесса вызовов audioexample.ambisonics.ambiencode
применить матрицу энкодера к звуковому входу. Выход плагина является ambisonic закодированным аудио. Матрица энкодера пересчитывается только тогда, когда изменено свойство плагина, которое минимизирует расчеты внутри цикла процесса.
Интерфейс плагина заполняет азимут и повышение, но не тип устройства. Идея, лежащая в основе типа устройства, состоит в том, чтобы добавить off-каналы в матрицу энкодера, чтобы упорядочить матрицу в 8x-канальную систему координат. Например: второй порядок имеет 9 каналов, создают матрицу 16-канального энкодера, причем первые 9 каналов имеют тип устройства 1 (on), а остальные 7 каналов имеют тип устройства 0 (off).
audioTestBench(audiopluginexample.AmbiEncoderPlugin)
audioTestBench('-close')
Смотрите код | Запуск плагина | Сгенерируйте плагин
Генерация амбизонических плагинов может быть вовлеченным процессом. Функция ambiGenerateEncoderPlugin оптимизирует процесс генерации плагинов амбизонического энкодера. Эта функция поддерживает амбизонику до седьмого порядка. Поддерживаемые форматы: 'acn-sn3d', 'acn-n3d', 'acn-fuma', 'acn-maxn', 'fuma-sn3d', 'fuma-n3d', 'fuma-fuma', 'fuma-maxn'. Функция требует следующих входов:
имя класса audioPlugin
Список устройств положения энкодера
амбисонический порядок
ambisonic формат
% Provide a name for the audioPlugin class name = 'myEncoderPlugin'; % Include a device list of element positions device = [45 135 225 315 45 135 225 315; -45 -45 -45 -45 45 45 45 45]; % Specify the ambisonic order order = 3; % Specify the ambisonic format format = 'acn-sn3d';
Запустите функцию.
audioexample.ambisonics.ambiGenerateEncoderPlugin(name, device, order, format)
После разработки аудиоплагин может быть проверен, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).
audiopluginexample.AmbiDecoderPlugin
построен вокруг audioexample.ambisonics.ambidecodemtrx
и audioexample.ambisonics.ambidecode
функций. Амбизонический порядок определяет количество входных каналов плагина декодера. Количество устройств (местоположений динамиков) является количеством выходных каналов плагина декодера.
audioexample.ambisonics.ambidecodemtrx
генерирует матрицу амбизонического декодера из заданного амбизонического порядка и данного списка устройств. audioexample.ambisonics.ambidecode
применяет матрицу амбизонического декодера к амбизоническому аудио, в результате чего декодируется аудио. Форматирование ambisonic audio может быть задано с помощью audioexample.ambisonics.ambidecode
функция. audioexample.ambisonics.ambidecode
определяет амбизонический порядок из минимума амбизонического порядка входного аудио и амбизонического порядка матрицы декодера.
Плагин декодера наследует непосредственно от базового класса audioPlugin. Конструктор плагина вызывает audioexample.ambisonics.ambidecodemtrx
для создания исходной матрицы декодера. Функция процесса вызовов audioexample.ambisonics.ambidecode
применить матрицу декодера к звуковому входу. Выходы плагина декодированы. Матрица декодера пересчитывается только тогда, когда изменено свойство плагина, которое минимизирует расчеты внутри цикла процесса.
Интерфейс плагина заполняет азимут и повышение, но не тип устройства. Идея, лежащая в основе типа устройства, состоит в том, чтобы добавить off-каналы в матрицу энкодера, чтобы упорядочить матрицу в 8x-канальную систему координат. Например: второй порядок имеет 9 каналов, создают матрицу 16-канального энкодера, причем первые 9 каналов имеют тип устройства 1 (on), а остальные 7 каналов имеют тип устройства 0 (off).
audioTestBench(audiopluginexample.AmbiDecoderPlugin)
audioTestBench('-close')
Смотрите код | Запуск плагина | Сгенерируйте плагин
Генерация амбизонических плагинов может быть вовлеченным процессом. Функция ambiGenerateDecoderPlugin оптимизирует процесс генерации плагинов-амбизонических декодеров. Эта функция поддерживает амбизонику до седьмого порядка. Поддерживаемые форматы: 'acn-sn3d', 'acn-n3d', 'acn-fuma', 'acn-maxn', 'fuma-sn3d', 'fuma-n3d', 'fuma-fuma', 'fuma-maxn'. Функция требует следующих входов:
имя audioPlugin
класс
список устройств положения декодера
амбисонический порядок
ambisonic формат
% Provide a name for the audioPlugin class name = 'myDecoderPlugin'; % Include a device list of speaker positions device = [45 135 225 315 45 135 225 315; -45 -45 -45 -45 45 45 45 45]; % Specify the ambisonic order order = 3; % Specify the ambisonic format format = 'acn-sn3d';
Запустите функцию.
audioexample.ambisonics.ambiGenerateDecoderPlugin(name,device,order,format)
После разработки аудиоплагин может быть проверен, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).
Амбизоническое бинауральное декодирование
[1] Kronlachner, M. (2014). Пространственные преобразования для изменения амбизонических записей (магистерская диссертация).
[2] https://en.wikipedia.org/wiki/Ambisonics
[3] https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats