主要内容

Ambisonic插件生成

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

背景

Ambisonic编码是将声场分解成球形谐波的过程。编码矩阵是特定设备位置处存在的球面谐波的量。在模式匹配解码中,解码矩阵是编码矩阵的伪逆。Ambisonic Deadoding是将球面谐波重建为声场的过程。

这个例子涉及到高阶双电子学,它包括传统的一阶双电子学。在双声道中,双声道数与双声道阶数有一定的关系:

Ambisonic_Channels =(Ambisonic_Order + 1)^ 2

例如:一阶两栖需要4个声道,而四阶两栖需要25个声道。

支持以下约定金宝app

  • ACN通道测序

  • SN3D正常化

  • 方位角从0到360度

  • 从-90到90度的海拔

Ambisonic Design的示例支持伪逆解码的第七次野金宝app蛮人。

Ambisonic设备:元素和扬声器

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

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

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

声场表示

为了捕获,表示或再现与amisiSICS的声场,设备数量(元素或扬声器)必须大于或等于ambisonic信道的数量。

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

number_devices > = number_ambisonic_channels

对于编码器来说,如果设备(元素)的数量小于双声道的数量,那么在双声道中可以表示来自该设备(元素)位置的音频,但不表示声场。可以将一个或多个声道编码成双声道,以便在双声场中定位声源。每个编码器表示在指定的设备(元素)位置上被编码的声场的强度。

对于译码器,如果设备(扬声器)的数量小于双声道的数量,则该设备(扬声器)不能在指定的双声级完全重现一个声场。声场可以以较低的双声级再现。例如,在一个有10个扬声器的扬声器阵列上播放的三阶双电子学可以实现为一个二阶(9声道)系统,带有一个附加的扬声器用于播放。每个解码器表示在指定的装置(扬声器)位置上的双声场的强度。

伪逆译码方法

有许多解码选项,该示例使用伪逆解码,也称为模式匹配。该解码方法有利于常规形状的设备布局。其他解码方法可以利用不规则形状的装置布局。

DeviceType

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

例如:具有14个元素的二阶AMBISONIC编码器具有14个输入和9个输出。如果将具有DeviceType 0(OFF)的更多设备(元素)添加到编码器,则编码器具有16个输入和9个输出。具有29个设备(扬声器)的四阶AMBISONIC解码器具有25个输入和29个输出。如果将具有DeviceType 0(OFF)的其他设备(扬声器)添加到解码器,则通道计数成为25个输入和32个输出。

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

Ambisonic编码器插件

audioptuinexample.ambiencoderplugin建在周围audioexample.ambisonics.ambiencodemtrxaudioExample.ambisonics.ambiencode.ambiencode.ambiencode.功能。设备(要编码的元素)的数量是编码器插件的输入通道的数量。双音阶决定了编码器插件的输出通道数。

audioexample.ambisonics.ambiencodemtrx根据给定的双声速顺序和给定的设备列表生成双声速编码器矩阵。audioExample.ambisonics.ambiencode.ambiencode.ambiencode.将双声速编码器矩阵应用于原始音频,得到双声速编码音频。可以使用ambisonic音频的格式指定audioExample.ambisonics.ambiencode.ambiencode.ambiencode.功能。原始音频通道的数量必须等于Ambisonic编码器矩阵中的设备数。

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

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

Audioiotestbench(audioptuinexample.ambiencoderplugin)

audioTestBench (“关闭”

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

生成自定义Ambisonic编码器插件

生成双onic插件是一个复杂的过程。的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类提供一个名称名称=“myEncoderPlugin”;%包含一个包含元素位置的设备列表装置= [45 135 225 315 45 135 225 315;-45 -45 -45 -45 45 45 45 45];%指定双onic顺序订单= 3;%指定双onic格式格式=“acn-sn3d”;

运行功能。

AudioExample.ambisonics.ambigenerate encoderplugin(名称,设备,订单,格式)

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

Ambisonic解码器插件

audioptuminexample.ambidecoderplugin建在周围audioexample.ambisonics.ambidecodemtrxaudioexample.ambisonics.ambidecode功能。AMBISONIC订单确定解码器插件的输入通道数。设备数量(扬声器位置)是解码器插件的输出通道数。

audioexample.ambisonics.ambidecodemtrx根据给定的双声速顺序和给定的设备列表生成双声速解码器矩阵。audioexample.ambisonics.ambidecode将Ambisonic解码器矩阵应用于Ambisonic Audio,导致解码的音频。可以使用ambisonic音频的格式指定audioexample.ambisonics.ambidecode功能。audioexample.ambisonics.ambidecode从输入音频的二阶声阶的最小值和解码器矩阵的二阶声阶来确定二阶声阶。

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

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

Audioiotestbench(audioptuinexample.ambidecoderplugin)

audioTestBench (“关闭”

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

生成自定义Ambisonic解码器插件

生成双onic插件是一个复杂的过程。的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类提供一个名称名称='mydecoderplugin';%包括扬声器位置的设备列表装置= [45 135 225 315 45 135 225 315;-45 -45 -45 -45 45 45 45 45];%指定双onic顺序订单= 3;%指定双onic格式格式=“acn-sn3d”;

运行功能。

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

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

也可以看看

Ambisonic双耳解码

相关的话题

参考文献

[1] Kronlachner, M.(2014)。音质音质的空间变换(硕士论文)。

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

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