主要内容

Ambisonic插件生成

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

背景

双声编码是将声场分解成球谐的过程。编码矩阵是在特定器件位置上存在的球谐量。在模式匹配译码中,译码矩阵是编码矩阵的伪逆。两栖解码是将球谐重构成声场的过程。

这个例子涉及到高阶两栖,其中包括传统的一阶两栖。在双声道中,双声道的数量与双声道的顺序之间有一个关系:

Ambisonic_channels = (ambisonic_order + 1)^2

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

支持以下约定金宝app

  • ACN频道排序

  • SN3D正常化

  • 方位角从0到360度

  • 高度从-90度到90度

使用伪逆译码的双谐设计示例支持高达七阶的双谐设计。金宝app

Ambisonic设备:元素和扬声器

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

该双向编码器将双向编码矩阵应用于麦克风元件的原始音频。麦克风元件的位置(方位角、仰角)和deviceType以及所需的双音速顺序是创建双音速编码矩阵所必需的。

该译码器将该译码矩阵应用于在扬声器上播放的双音音频。需要扬声器的位置(方位角、仰角)和设备类型以及所需的双音顺序来创建双音解码矩阵。

声场表示

为了捕获、表示或再现带有双声场的声场,设备(元件或扬声器)的数量必须大于或等于双声道的数量。

对于编码示例,用32声道球形阵列麦克风捕获的音频可以被编码到四阶ambisonics(25声道)。对于解码示例,将包含64个扬声器的扬声器阵列配置为七阶双音阶播放。如果播放的内容是四阶两栖,那么即使将阵列设置为七阶,也只能通过系统实现四阶两栖。

number_devices > = number_ambisonic_channels

对于编码器来说,如果设备(元件)的数量小于双声道的数量,那么来自设备(元件)位置的音频可以用双声道表示,但不表示声场。一个或多个音频通道可以被编码到双音波中,以努力在双音波场中定位声源。每个编码器表示要在指定设备(元件)位置进行编码的声场强度。

对于解码器来说,如果设备(扬声器)的数量小于双声道的数量,则设备(扬声器)不能按照指定的双声道顺序完全再现声场。声场可以在较低的双声阶上再现。例如,在带有10个扬声器的扬声器阵列上播放的三阶ambisonics可以实现为带有附加扬声器的播放的二阶(9通道)系统。每个解码器表示在指定设备(扬声器)位置的双声场强度。

伪逆译码方法

有许多解码选项,本例使用伪逆解码,也称为模式匹配。这种解码方法有利于规则形状的设备布局。其他解码方法可能青睐不规则形状的设备布局。

DeviceType

编码器的deviceType打开或关闭特定元素的设备(元素)编码。解码器的deviceType为特定的扬声器打开或关闭设备(扬声器)解码。如果省略了deviceType向量,则deviceTypes设置为1 (on)。deviceType背后的意图是提供带有关闭通道的填充编码器输入或解码器输出的灵活性,以适应ambisonic编码器或解码器插件到具有固定通道计数的环境中,如8、16或32通道音频总线。

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

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

Ambisonic编码器插件

audiopluginexample。AmbiEncoderPlugin是围绕着audioexample.ambisonics.ambiencodemtrxaudioexample.ambisonics.ambiencode功能。设备(要编码的元素)的数量是编码器插件的输入通道的数量。双音阶决定了编码器插件输出通道的数量。

audioexample.ambisonics.ambiencodemtrx从给定的双码顺序和给定的设备列表生成双码编码器矩阵。audioexample.ambisonics.ambiencode将双码编码器矩阵应用于原始音频,产生双码编码音频。属性可以指定ambisonic音频的格式audioexample.ambisonics.ambiencode函数。原始音频通道的数量必须等于双码编码器矩阵中的设备数量。

编码器插件直接继承自audioPlugin基类。插件构造函数调用audioexample.ambisonics.ambiencodemtrx来建立初始编码器矩阵。流程函数调用audioexample.ambisonics.ambiencode将编码器矩阵应用于音频输入。该插件的输出是ambisonic编码音频。只有当插件属性被修改时,编码器矩阵才会被重新计算,这将最小化进程循环中的计算。

插件接口填充方位角和仰角,但不填充设备类型。器件类型背后的想法是将非通道添加到编码器矩阵中,以使矩阵适合于8x通道帧。例如:二阶有9个通道,创建一个16通道编码器矩阵,前9个通道设备类型为1(开),其余7个通道设备类型为0(关)。

audioTestBench (audiopluginexample.AmbiEncoderPlugin)

audioTestBench (“关闭”

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

生成自定义Ambisonic编码器插件

生成双字符插件可能是一个复杂的过程。的ambiGenerateEncoderPlugin函数简化了生成双向编码器插件的过程。这个功能支持高达七阶的两栖。金宝app金宝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%指定双字符顺序订单= 3;%指定双字符格式格式=“acn-sn3d”

运行功能。

audioexample.ambisonics。名称,设备,顺序,格式

一旦设计完成,音频插件就可以验证、生成并部署到第三方数字音频工作站(DAW)。

Ambisonic解码器插件

audiopluginexample。AmbiDecoderPlugin是围绕着audioexample.ambisonics.ambidecodemtrxaudioexample.ambisonics.ambidecode功能。双音阶决定了解码器插件的输入通道数量。设备的数量(扬声器位置)是解码器插件的输出通道的数量。

audioexample.ambisonics.ambidecodemtrx从给定的双码顺序和给定的设备列表生成双码解码器矩阵。audioexample.ambisonics.ambidecode将双码译码器矩阵应用于双码音频,得到解码后的音频。属性可以指定ambisonic音频的格式audioexample.ambisonics.ambidecode函数。audioexample.ambisonics.ambidecode由输入音频的双音阶和解码器矩阵的双音阶的最小值确定双音阶。

解码器插件直接继承自audioPlugin基类。插件构造函数调用audioexample.ambisonics.ambidecodemtrx来建立初始解码器矩阵。流程函数调用audioexample.ambisonics.ambidecode将解码器矩阵应用于音频输入。插件的输出是解码的音频。只有当插件属性被修改时,解码器矩阵才会被重新计算,以最小化过程循环中的计算量。

插件接口填充方位角和仰角,但不填充设备类型。器件类型背后的想法是将非通道添加到编码器矩阵中,以使矩阵适合于8x通道帧。例如:二阶有9个通道,创建一个16通道编码器矩阵,前9个通道设备类型为1(开),其余7个通道设备类型为0(关)。

audioTestBench (audiopluginexample.AmbiDecoderPlugin)

audioTestBench (“关闭”

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

生成自定义Ambisonic解码器插件

生成双字符插件可能是一个复杂的过程。的ambiGenerateDecoderPlugin函数简化了生成双谐解码器插件的过程。这个功能支持高达七阶的两栖。金宝app金宝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%指定双字符顺序订单= 3;%指定双字符格式格式=“acn-sn3d”

运行功能。

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

一旦设计完成,音频插件就可以验证、生成并部署到第三方数字音频工作站(DAW)。

另请参阅

Ambisonic双耳解码

相关的话题

参考文献

Kronlachner, M.(2014)。空间转换的双声录音的改变(硕士论文)。

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

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