主要内容

Ambisonic插件生成

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

背景

双声编码是将声场分解为球面谐波的过程。编码矩阵是存在于特定器件位置的球形谐波的量。在模式匹配译码中,译码矩阵是编码矩阵的伪逆。双音域解码是将球面谐波重构为声场的过程。

这个例子涉及到高阶ambionics,包括传统的一阶ambionics。在双音域中,双音域通道的数量与双音域的阶数有一定的关系:

Ambisonic_channels = (ambisonic_order + 1)^2

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

金宝app支持公约

  • ACN通道测序

  • SN3D正常化

  • 方位角从0度到360度

  • 仰角从-90度到90度

双声子设计实例支持七阶双声子和伪逆解码。金宝app

双声器件:元件和扬声器

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

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

双声子解码器将双声子解码矩阵应用于双声子音频,以便在扬声器上播放。需要扬声器的位置(方位角,仰角)和deviceType以及所需的双音域顺序来创建双音域解码矩阵。

声场表示

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

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

Number_devices >= number_ambisonic_channels

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

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

伪逆译码法

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

设备类型

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

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

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

双声编码器插件

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

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

编码器插件直接继承自audioPlugin基类。插件构造函数调用audioexample.ambisonics.ambiencodemtrx构建初始编码器矩阵。流程函数调用audioexample.ambisonics.ambiencode将编码器矩阵应用于音频输入。该插件的输出是双音域编码音频。编码器矩阵只有在插件属性被修改时才会重新计算,从而最大限度地减少了进程循环中的计算。

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

audioTestBench (audiopluginexample.AmbiEncoderPlugin)

audioTestBench (“关闭”

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

生成自定义双光子编码器插件

生成双光子插件可能是一个复杂的过程。的ambiGenerateEncoderPlugin函数简化了生成双音域编码器插件的过程。该函数支持高达七阶的ambi金宝apponics。金宝app支持的格式有“acn-sn3d”、“acn-n3d”、“acn- fua”、“acn-maxn”、“fuma-sn3d”、“fuma-n3d”、“fuma- fua”、“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];指定双音阶Order = 3;指定双音域格式格式=“acn-sn3d”

运行函数。

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

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

双光子解码器插件

audiopluginexample。AmbiDecoderPlugin是围绕着audioexample.ambisonics.ambidecodemtrx而且audioexample.ambisonics.ambidecode功能。双光子顺序决定了解码器插件的输入通道的数量。设备的数量(扬声器位置)是解码器插件的输出通道的数量。

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

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

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

audioTestBench (audiopluginexample.AmbiDecoderPlugin)

audioTestBench (“关闭”

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

生成自定义双光子解码器插件

生成双光子插件可能是一个复杂的过程。的ambiGenerateDecoderPlugin函数简化了生成双声子解码器插件的过程。该函数支持高达七阶的ambi金宝apponics。金宝app支持的格式有“acn-sn3d”、“acn-n3d”、“acn- fua”、“acn-maxn”、“fuma-sn3d”、“fuma-n3d”、“fuma- fua”、“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];指定双音阶Order = 3;指定双音域格式格式=“acn-sn3d”

运行函数。

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

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

另请参阅

双声双耳解码

相关的话题

参考文献

[1]克朗拉克纳,M.(2014)。双音阶录音的空间变换(硕士论文)。

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

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