Генерация плагинов Ambisonic

Эти примеры показывают, как создать амбизонические плагины с помощью демонстрационных функций 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 степеней.

Плагин энкодера Ambisonic

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')

Смотрите код | Запуск плагина | Сгенерируйте плагин

Сгенерируйте пользовательский плагин Ambisonic Encoder

Генерация амбизонических плагинов может быть вовлеченным процессом. Функция ambiGenerateEncoderPlugin оптимизирует процесс генерации плагинов амбизонического энкодера. Эта функция поддерживает амбизонику до седьмого порядка. Поддерживаемые форматы: 'acn-sn3d', 'acn-n3d', 'acn-fuma', 'acn-maxn', 'fuma-sn3d', 'fuma-n3d', 'fuma-fuma', 'fuma-maxn'. Функция требует следующих входов:

  1. имя класса audioPlugin

  2. Список устройств положения энкодера

  3. амбисонический порядок

  4. 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).

Плагин декодера Ambisonic

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')

Смотрите код | Запуск плагина | Сгенерируйте плагин

Сгенерируйте пользовательский плагин Ambisonic Decoder

Генерация амбизонических плагинов может быть вовлеченным процессом. Функция ambiGenerateDecoderPlugin оптимизирует процесс генерации плагинов-амбизонических декодеров. Эта функция поддерживает амбизонику до седьмого порядка. Поддерживаемые форматы: 'acn-sn3d', 'acn-n3d', 'acn-fuma', 'acn-maxn', 'fuma-sn3d', 'fuma-n3d', 'fuma-fuma', 'fuma-maxn'. Функция требует следующих входов:

  1. имя audioPlugin класс

  2. список устройств положения декодера

  3. амбисонический порядок

  4. 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