ADSP-21569的图形化编程专题四:基础算法-音效算法

硬件准备

1.ADSP-21569EVB开发板

产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.17.778d60fezn1w9T&id=721683997705

2.AD-ICE2000仿真器(或者AD-HP530ICE,我觉得530的ICE1000 5M主频编译速度有点慢,所以我后面用的都是47M主频的ICE-2000)

产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.25.17704901MmP2bl&id=753233120844

3.模拟音源输入设备(手机或电脑声卡的模拟音源)

4.模拟音源输出设备(耳机或音箱)

硬件链接示意图

在这里插入图片描述

1.在开发板、AD-ICE2000仿真器、USBi调试器都断电的情况下,分别和开发板接好线;

2.开发板上电,AD-ICE2000仿真器上电;(注意,USBi此刻只连在板子上,不上电)

3.CCES运行图形化编程的工程,让他RUN起来;

4.再把USBi上电接PC;

这些前置条件都达成之后,我们就可以专心的在SigmaStudio软件下做图形化编程了。

作者的话

本章写基础音效算法。

1.音量调节

最基础的算法,调节音量大小:

在这里插入图片描述

SigmaStudio里有一个版块,专门的音量调节模块,我们选一个常用的:

在这里插入图片描述

0/1输入,0/1输出,中间加一个音量控制模块。我们再把这个音量模块的节点多加一个:

在这里插入图片描述

左键选中模块,右键新增节点:

在这里插入图片描述

逻辑连线:

在这里插入图片描述

在线下载程序后,耳机听到音乐,鼠标调节这个音量模块,耳朵里听到的音乐声音随之变大变小。

2.多通道音量调节

2个音量调节模块,分别控制每个耳朵的音量:

在这里插入图片描述

下载程序后,鼠标分别拖动2个调音量模块,两个耳朵分别感受到音量的大小变化。

3.单通道静音

静音也是音频调试中最常见的功能,如果实现静音?

很简单,我们加一个静音模块就行啦:

在这里插入图片描述

下载程序后,鼠标把静音模块打钩,就会有一个耳朵被静音,只有另外一只耳朵听得到音乐。

在这里插入图片描述

4.立体声双声道静音

在这里插入图片描述

同样是把静音模块鼠标右键,新增一个输入输出,再逻辑连线,这个静音模块就把2个输出声道都控制了。

下载程序后,把静音模块打钩,2个耳朵都被静音。

特别注意,这个程序你会发现,耳机中明显出现了爆破音,不要慌,下一个程序帮你解决,兄弟们继续跟着我的节奏往下走。

5.带压摆的静音

在 SigmaDSP 的算法模块中,会发现很多都有带 SW 的模块,拖出来跟不带的一模一样,这 个是干嘛的?注意,非常重要,这个带 SW 的就叫带压摆的模块!

以静音这个模块来讲,见下面的图示:

在这里插入图片描述

压摆什么意思?这个得从这个模块的算法来讲了:

No Slew:不带压摆的静音,启用时,可立即使信号静音,不存在增益调节。相对于压摆算法, 这种算法需要较少资源;但是实时切换时,可能导致不连续现象(滴答声和爆裂声)

SW:压摆类算法,可从 0dB 增益平滑过渡至静音,并从静音过渡至 0dB 增益。这种压摆算法由软件(故称为“SW”)实现,比“无压摆”算法要求更多指令。

所以综上所述,无压摆的模块,在音效框架很复杂的时候,实时切换,有可能会出现爆破音。用带压摆的模块就可以很好的解决这个问题。有些用户可能就要说了,那就全都用带 SW 的模块不就好了?不是这样的,DSP 的内部资源是很有限的,带压摆的算法会占用更多的资源,全都用SW,可能会导致你用不了太多的算法模块了,这里就要有一个权衡,如果用不带压摆的模块,实测没有爆破音,那就放心大胆的用,如果发现爆破音,再换带压摆的模块来解决吧,我们还是希望 DSP 能用更多的算法模块的。

下面这个例程就是带压摆的静音,因为程序简单,跟普通静音没什么区别,但这个章节技术点一定要掌握。

在这里插入图片描述

用了这个带压摆的静音模块,你再下载程序,会发现明显的爆破音没啦,声音又清澈了。

实用小技巧,务必掌握。

6.2进4出-路由功能-开关选择声道输出

开关选择通道输出,在SigmaStudio里有一个专门的大模块:

在这里插入图片描述

这里都是,我们选一个:

在这里插入图片描述
简单说一说这个程序,0/1输入,经过一个MIX做混音后,进通道选择模块,出来2个T,分别送到0/1输出和2/3输出;

下载程序后,0/1输入送给O/1输出,2/3输出这个时候听不到音乐;我们用鼠标选择一下通道:

在这里插入图片描述

这个时候0/1输出通道就听不到音乐,而2/3输出通道则听到了音乐。

这个路由功能很常用,兄弟们需要掌握。至于更多通道的路由,道理跟这个一样,我就不浪费笔墨了,有兴趣的兄弟自己做做程序,玩一下。

7.4进2出-路由功能-开关选择声道输入

在这里插入图片描述

程序很容易理解,0/1和2/3输入,经过一个路由后,输出到0/1;选上面的时候是0/1输入,路由选下面的时候是2/3输入。

在这里插入图片描述

8.分频器-高低音分频

分频可以是直通的分频,DSP 还可以支持把高低音分离出来,高音走高音通道,低音走低音通道,我们来看一下是怎么做的。

在这里插入图片描述

0/1输入,经过高低音分频后,L0低音我都给送到0/1输出,Hi高音我都给送到2/3输出,这样就把0/1输入过来的音频做了高低音分频。

点开这个分频模块:

在这里插入图片描述

各种参数可以设置,大家自己去试一下吧。

下载程序后,0/1输出听到的就是低音,2/3输出听到的就是高音啦。

9.分频器-高中低音分频

将左右声道的立体声进行高中低音分频输出,例程如下:

在这里插入图片描述

0/1输入音源,经过高中低音分频模块,低音L0送给0/1输出,中音MID送给2/3输出,高音HI送给4/5输出。

这个分频器还有更详细的设置,我们点击分频器中间的这个按钮:

在这里插入图片描述

在这里插入图片描述

就可以对这些参数进行详细的配置了。

10.线性增益

“线性增益”(Linear Gain)模块以文本字段中指定的值对信号进行缩放。在例程里,我假定一下, 感觉低音输出的音量太小,我要对他进行放大,于是我就在这个通道上加上限行增益算法进行响度的补偿!

在这里插入图片描述

手动填入数字,感受一下声音放大、缩小的效果吧!

11.延时

延时是音频处理中最常见的一种算法,“延迟”(Delay)模块(采用 Z-a 算法)向信号流中添加一个可变延迟,其范围在 1 与 DSP 的最大可用内存之间。

用户可以用耳机听,然后把两个耳朵的延时设置不同,听一下效果。

在这里插入图片描述

12.多个延时

有兄弟问想要多个延时怎么办,很简单,就多加几个延时模块,把延时串起来,只要你的内存够,就能加。怎么样才叫内存够了?你下载程序不报错,可以运行,那就说明内存够,下载报错了,那就内存溢出了,我们就要减量啦。

在这里插入图片描述

13.反馈

“反馈”(Feedback)算法在信号通道中生成一个延迟,并将信号重新引导至该通道中较早发生的输入。(图中所示即为这种反向信号流,这是唯一一个绿色输入位于右侧、蓝色输出位于左侧的模块。)注意,如果设计中要求反馈,则必须使用该模块。

我做一个例子,主要是要讲一下这个反馈的信号流是反的:

在这里插入图片描述

有兄弟可能会说,OP老师你这做的程序跟实际音频开发没一点关系,我们做音频的是怎么都不会这么设计程序的。

你说的没错,我这里写的这些基础程序,全部都是把我想到的,常用的模块都拉出来,随便做了个程序,让兄弟们知道这些算法再哪里,怎么用?回到真正的音频开发中,你们就可以很方便的把他嵌入到你们的音频框架中去发挥!

14.电平实时显示

我们来加个电平显示的模块,直观的看看声音的情况;这里有很多电平显示模块,我就随便选了一个,用户都可以试试看。

在这里插入图片描述

0/1输入音源,0通道我加了电平显示模块,就会看到电平随着音量而变化。

15.相位

在这里插入图片描述

打钩一下模块,感受一下吧。

结束语

最基础的开发,简单的写了15个程序,后面的文档会再深化的讲一讲其他的算法模块使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADI_OP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值