主要内容

Ambisonic插件生成

这个例子显示了如何创建ambisonic插件使用MATLAB®高阶ambisonic的话(HOA)演示功能。Ambisonics是空间音频技术代表了一个三维声场用球面谐波。这个例子包含一个编码器插件,一个函数来生成定制的编码器插件,一个解码器插件,和一个函数来生成自定义解码器插件。的定制插件生成允许用户指定各种给定ambisonic ambisonic订单和各种设备列表配置。

背景

Ambisonic编码分解的过程是一个球面谐波声场。编码矩阵的球函数出现在特定的设备位置。在模式匹配解码,解码矩阵的伪逆矩阵编码。Ambisonic解码的过程重建球面谐波声场。

这个例子涉及到高阶ambisonics,包括传统的一阶ambisonics。在ambisonics, ambisonic通道的数量之间的关系和ambisonic顺序:

ambisonic_channels = (ambisonic_order + 1) ^ 2

例如:一阶ambisonics需要四个声道,而四阶ambisonics需要:25音频通道。

支持以下约定金宝app

  • ACN频道排序

  • SN3D正常化

  • 从0到360度方位

  • 海拔-90至90度

ambisonic设计例子支持多达seventh-order金宝app ambisonics伪逆译码。

Ambisonic设备:元素和扬声器

Ambisonic设备分为两组:元素和扬声器。每个设备都有一个音频信号和元数据描述它的位置和操作。元素对应于多麦克风阵列,和扬声器扬声器阵列对应ambisonic回放。

ambisonic编码器ambisonic编码矩阵适用于原始音频从麦克风元素。位置(方位角、仰角)和deviceType麦克风的元素所需的ambisonic秩序需要创建ambisonic编码矩阵。

ambisonic解码器ambisonic解码矩阵适用于ambisonic音频扬声器播放。位置(方位角、仰角)和deviceType扬声器连同所需ambisonic秩序的需要创建ambisonic解码矩阵。

声场表示

为了捕捉、代表或复制与ambisonics声场,设备的数量(元素或扬声器)必须大于或等于ambisonic通道的数量。

音频编码的例子中,有32路球面阵列麦克风可能编码到四阶ambisonics(25)渠道。对于解码示例,包含64扬声器配置的扬声器阵列ambisonic seventh-order回放。如果播放的内容是四阶ambisonics,那么即使数组建立第七——秩序,只有四阶ambisonics是通过系统实现的。

number_devices > = number_ambisonic_channels

编码器,如果设备(元素)的数量小于ambisonic通道的数量,然后从设备音频(元素)位置可能在ambisonics代表,但声场不是代表。一个或多个音频通道可能是编码到ambisonics为了位置来源ambisonic字段。每个编码器代表声场的强度在指定的设备编码(元素)的位置。

解码器,如果设备(扬声器)的数量小于ambisonic通道的数量,设备(扬声器)并不完全复制一个声场在指定ambisonic秩序。声场可以复制在一个较低的ambisonic秩序。例如,三阶ambisonics扮演与10个扬声器扬声器阵列可以实现二阶(9频道)系统用额外的扬声器回放。每个解码器代表ambisonic场的强度在指定的设备(扬声器)的位置。

伪逆译码方法

有许多解码选项,这个例子使用伪逆解码,也称为模式匹配。这个解码方法有利于regular-shaped设备布局。其他的解码方法可能忙异形设备布局。

DeviceType

编码器将设备deviceType(元素)编码为一个特定的元素。的deviceType解码器将设备(议长)解码为一个特定的演说家。如果省略deviceType向量,然后deviceTypes都设置为1(上)。deviceType背后的意图是提供灵活性的填充编码器输入或解码器输出通道以适应一个ambisonic编码器和解码器插件与固定信道环境方面如一个8 - 16或32路音频总线。

例如:一个二阶ambisonic编码器与14个元素有14 9输入和输出。如果你添加两个设备(元素)与deviceType 0(关闭)编码器,编码器有16个输入和9输出。一个四阶ambisonic解码器与29日设备(扬声器)25输入和29输出。如果你添加三个设备(扬声器)deviceType 0(关闭)译码器,那么通道计数成为25 32输入和输出。

当deviceType设置为0(关闭),通道被忽略的方位角和仰角;然而,仍然需要一个值。建议将方位和仰角设置为0度当设备类型设置为0(关闭)。

Ambisonic编码器插件

audiopluginexample.AmbiEncoderPlugin是建立在audioexample.ambisonics.ambiencodemtrxaudioexample.ambisonics.ambiencode功能。设备的数量(元素编码)是编码器的输入通道插件的数量。ambisonic顺序决定了编码器的输出通道插件的数量。

audioexample.ambisonics.ambiencodemtrx生成ambisonic编码矩阵从给定ambisonic秩序和给定的设备列表。audioexample.ambisonics.ambiencodeambisonic编码器矩阵适用于原始音频编码导致ambisonic音频。ambisonic音频的格式可能指定的audioexample.ambisonics.ambiencode函数。原始音频频道的数量必须等于设备的数量ambisonic编码矩阵。

直接从audioPlugin编码器插件继承基类。插件构造函数调用audioexample.ambisonics.ambiencodemtrx建立初始编码矩阵。函数调用过程audioexample.ambisonics.ambiencode应用音频输入的编码矩阵。的输出插件ambisonic音频编码。编码矩阵是重新计算只有当一个插件属性修改它最小化计算过程内循环。

插件接口填充方位和仰角但不是设备类型。设备类型背后的想法是添加渠道一个编码器矩阵矩阵融入一个8 x-channel框架。例如:二阶9频道,创建一个16通道编码矩阵,与第一9频道的设备类型1(上),其余7频道的设备类型0(关闭)。

audioTestBench (audiopluginexample.AmbiEncoderPlugin)

audioTestBench (“关闭”)

检查代码|运行插件|生成插件

生成自定义Ambisonic编码器插件

生成ambisonic插件可以是一个复杂的过程。的ambiGenerateEncoderPlugin功能流线的过程生成ambisonic编码器插件。这个函数支持多达sevent金宝apph-order ambisonics。金宝app支持的格式是‘acn-sn3d’,‘acn-n3d’,‘acn-fuma’,‘acn-maxn’,‘fuma-sn3d’,‘fuma-n3d’,‘fuma-fuma’,‘fuma-maxn’。函数需要输入如下:

  1. audioPlugin类的名称

  2. 设备列表的编码器的位置

  3. ambisonic秩序

  4. ambisonic格式

%为audioPlugin类提供一个名称name =“myEncoderPlugin”;%包括设备列表元素的位置设备= [45 135 225 315 45 135 225 315;-45 -45 -45 -45 45岁45岁);%指定ambisonic秩序订单= 3;%指定ambisonic格式格式=“acn-sn3d”;

运行功能。

audioexample.ambisonics。ambiGenerateEncoderPlugin(名称、设备订单,格式)

一旦设计,音频插件可以验证,生成和部署到一个第三方的数字音频工作站(寒鸦)。

Ambisonic解码器插件

audiopluginexample.AmbiDecoderPlugin是建立在audioexample.ambisonics.ambidecodemtrxaudioexample.ambisonics.ambidecode功能。ambisonic顺序决定了译码器的输入通道插件的数量。设备(扬声器位置)的数量的输出通道解码器插件的数量。

audioexample.ambisonics.ambidecodemtrx生成ambisonic译码矩阵从给定ambisonic秩序和给定的设备列表。audioexample.ambisonics.ambidecode应用ambisonic译码矩阵ambisonic音频解码音频。ambisonic音频的格式可能指定的audioexample.ambisonics.ambidecode函数。audioexample.ambisonics.ambidecode决定了ambisonic订单的最低ambisonic订单输入的音频和译码矩阵的ambisonic秩序。

直接从audioPlugin解码器插件继承基类。插件构造函数调用audioexample.ambisonics.ambidecodemtrx建立初始译码矩阵。函数调用过程audioexample.ambisonics.ambidecode译码矩阵应用到音频输入。插件是解码音频的输出。译码矩阵重新计算是只有当一个插件属性修改它最小化计算过程内循环。

插件接口填充方位和仰角但不是设备类型。设备类型背后的想法是添加渠道一个编码器矩阵矩阵融入一个8 x-channel框架。例如:二阶9频道,创建一个16通道编码矩阵,与第一9频道的设备类型1(上),其余7频道的设备类型0(关闭)。

audioTestBench (audiopluginexample.AmbiDecoderPlugin)

audioTestBench (“关闭”)

检查代码|运行插件|生成插件

生成自定义Ambisonic解码器插件

生成ambisonic插件可以是一个复杂的过程。的ambiGenerateDecoderPlugin功能流线的过程生成ambisonic解码器插件。这个函数支持多达sevent金宝apph-order ambisonics。金宝app支持的格式是‘acn-sn3d’,‘acn-n3d’,‘acn-fuma’,‘acn-maxn’,‘fuma-sn3d’,‘fuma-n3d’,‘fuma-fuma’,‘fuma-maxn’。函数需要输入如下:

  1. 的名字audioPlugin

  2. 设备列表译码器的位置

  3. ambisonic秩序

  4. ambisonic格式

%为audioPlugin类提供一个名称name =“myDecoderPlugin”;%包括议长职位的设备列表设备= [45 135 225 315 45 135 225 315;-45 -45 -45 -45 45岁45岁);%指定ambisonic秩序订单= 3;%指定ambisonic格式格式=“acn-sn3d”;

运行功能。

audioexample.ambisonics.ambiGenerateDecoderPlugin(名称、设备订单,格式)

一旦设计,音频插件可以验证,生成和部署到一个第三方的数字音频工作站(寒鸦)。

另请参阅

Ambisonic双耳解码

相关的话题

引用

[1]Kronlachner, m (2014)。空间转换的变更Ambisonic录音(硕士论文)。

[2]https://en.wikipedia.org/wiki/Ambisonics

[3]https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats