主要内容

生成多路音频

这个例子展示了如何设置连续音频代使用多个音频通道。信号,一个示例韩德尔的“哈利路亚大合唱”,分为连续的片段和回放两部分。的第一部分例子中每一部分在一个扬声器和一个“。第二部分中每一部分在一组不同的人(一个合唱团的声音)。

加载音频数据

负载韩德尔的“哈利路亚”。

负载变量:

  • y代表着哈利路亚波形

  • Fs代表采样频率

负载汉德尔;

创建一个数据采集

创建一个DataAcquisition对象使用声音处理软件作为供应商ID。

dq =采集(“声音处理软件”)

添加渠道和调整生成扫描速率匹配的音频采样频率

添加6个音频输出通道和设置生成扫描率的音频采样率。

addoutput (dq,“Audio7”1:6,“音频”);dq。率= f;

情节音频数据

视觉识别音频段对应于每个“哈利路亚”的合唱和选择样本号码段启动和停止。图中的每个颜色对应一个不同的合唱。

确定每一段的结束

视觉识别部分边界和马克。

segmentEnd =[20000, 36000, 45000, 55000,长度(y)];

扬声器参数定义

建立一个可供选择的扬声器单元阵列命名speakerselection玩五段“哈利路亚”六种不同的扬声器。

nspeakers = 6;nspeakergroups = 5;speakerselection =细胞(1、nspeakergroups);

将扬声器分配给组

每个发言者从5.1通道选择指定扬声器系统发挥每个音频段(你的扬声器系统这些作业可能不同)。第一部分的例子中,使用单喇叭搭配“(4)。

  • 演讲者1:左前

  • 发言人2:右前

  • 发言人3:中心

  • 演讲者4:“

  • 演讲者5:左后

  • 发言人6:右后

speakerselection {1} = (4、6);%段1;演讲者4和6speakerselection {2} = (4、5);% 2段;演讲者4和5speakerselection {3} = [1,4];% 3段;演讲者1和4speakerselection {4} = (2、4);% 4段;扬声器2和4speakerselection {5} = (3、4);% 5段;演讲者3和4[singleChannelOutputs] =surroundSoundVoices (y, segmentEnd nspeakers、nspeakergroups speakerselection);

写单通道输出

编写一个单通道输出序列暂停在继续之前,下一节。

写(dq singleChannelOutputs);暂停(3);

将扬声器分配给组

每个发言者从5.1通道选择指定扬声器系统发挥每个音频段(你的扬声器系统这些作业可能不同)。第二部分的示例中,使用的扬声器。注意,“(4)是包含在所有演讲者的选择

  • 演讲者1:左前

  • 发言人2:右前

  • 发言人3:中心

  • 演讲者4:“

  • 演讲者5:左后

  • 发言人6:右后

speakerselection {1} = (4、5、6);%段1;演讲者4、5、6所示speakerselection {2} = (1、2、4);% 2段;演讲者1、2、4speakerselection {3} = (3、4);% 3段;演讲者3、4speakerselection {4} = (1、2、3、4);% 4段;演讲者1,2,3,4speakerselection {5} = [1, 2, 3, 4, 5, 6);% 5段;所有的演讲者[multiChannelOutput] =surroundSoundVoices (y, segmentEnd nspeakers、nspeakergroups speakerselection);

写多路输出

写(dq multiChannelOutput);
函数[multiChannelOutput] = surroundSoundVoices (audioOut、segmentEnds numSpeakers, numSpeakerGroups, speakerGroups)%分配连续的多个组的输出波形%的人在一个一对一的关系。输入波形分解%为连续的段。每一段由一个且只有一个输出%的人,每组依次参观了。%的输入波形分解成部分是由不同群体%的扬声器。在这个演示中,我们慢慢想添加的“声音”%,逐步拥有更多扬声器产生的输出波形。%,我们将视作为一个连续的输出波形%的序列片段(每组一段扬声器)。例如,如果% 3组的演讲者,我们能想到的分手输出%波形分成3段:输出= (s1, s2 s3)%扬声器组1输出:s1 0 0%扬声器组2输出:0 s2 0%扬声器组3输出:0 0 s3multiChannelOutput = repmat(0.01,长度(audioOut) numSpeakers);startOfSegment = [1 (segmentEnds (1: end-1) + 1)];i = 1: numSpeakerGroups speakergroup = speakerGroups {};n =元素个数(speakergroup);j = 1: n = startOfSegment范围(我):segmentEnds(我);multiChannelOutput(范围,speakergroup (j)) = audioOut(范围);结束结束结束