主要内容

Ambisonic插件生成

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

背景

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

本例涉及高阶环境声学,包括传统的一阶环境声学。在环境声学中,环境声学通道的数量与环境声学阶数之间存在关系:

Ambisonic_channels = (ambisonic_order + 1)^2

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

支持以下约定金宝app

  • ACN频道排序

  • SN3D归一化

  • 方位角从0到360度

  • 高度从-90度到90度

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

Ambisonic设备:元素和扬声器

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

ambisonic编码器将ambisonic编码矩阵应用于麦克风元件的原始音频。创建ambisonic编码矩阵需要麦克风元件的位置(方位角、仰角)和设备类型以及所需的ambisonic顺序。

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

声场表示

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

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

设备数量>=双声道数量

对于编码器,如果设备(元件)的数量小于ambisonic通道的数量,则来自设备(元件)的音频位置可以用环境音表示,但不表示声场。可以将一个或多个音频通道编码到环境音中,以定位环境音场中的源。每个编码器表示在指定设备(元件)位置编码的声场强度。

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

伪逆译码法

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

设备类型

编码器的deviceType打开或关闭特定元素的设备(元素)编码。解码器的deviceType打开或关闭特定扬声器的设备(扬声器)解码。如果省略deviceType向量,则deviceType设置为1(打开).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功能。设备数量(要编码的元素)是编码器插件的输入通道数量。ambisonic顺序决定编码器插件的输出通道数量。

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

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

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

audioTestBench (audiopluginexample.AmbiEncoderPlugin)

听力测试台(“-关闭”

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

生成自定义Ambisonic编码器插件

生成ambisonic插件可能是一个复杂的过程ambiGenerateEncoderPlugin函数简化生成ambisonic编码器插件的过程。此函数最多支持七阶ambisonic。支持的格式为“acn-sn3d”、“acn-n3d”、“acn fuma”、“acn ma金宝appxn”、“fuma-sn3d”、“fuma-n3d”、“fuma fuma”、“fuma maxn”。函数需要以下输入:

  1. audioPlugin类的名称

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

  3. 双音阶

  4. 音速格式

%提供audioPlugin类的名称name =“myEncoderPlugin”%包括元件位置的设备列表设备= [45 135 225 315 45 135 225 315;-45 -45 -45 -45%指定音速顺序顺序=3;%指定ambisonic格式格式=“acn-sn3d”

运行函数。

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

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

Ambisonic解码器插件

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

audioexample.ambisonics.ambidecodemtrx根据给定的ambisonic顺序和给定的设备列表生成ambisonic解码器矩阵。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)

听力测试台(“-关闭”

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

生成自定义Ambisonic解码器插件

生成ambisonic插件可能是一个复杂的过程双生成编码肽函数简化生成ambisonic解码器插件的过程。此函数最多支持七阶ambisonic。支持的格式为“acn-sn3d”、“acn-n3d”、“acn fuma”、“acn ma金宝appxn”、“fuma-sn3d”、“fuma-n3d”、“fuma fuma”、“fuma maxn”。函数需要以下输入:

  1. 姓名audioPlugin

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

  3. 双音阶

  4. 音速格式

%提供audioPlugin类的名称name =“myDecoderPlugin”%包括扬声器位置的设备列表设备= [45 135 225 315 45 135 225 315;-45 -45 -45 -45%指定音速顺序顺序=3;%指定ambisonic格式格式=“acn-sn3d”

运行函数。

audioexample.ambisonics.AmbiGeneratedCoderPlugin(名称、设备、顺序、格式)

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

另请参阅

双音双耳解码

相关话题

工具书类

[1] Kronlachner,M.(2014)。环境声波记录变化的空间变换(硕士论文)。

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

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