ADSP-21565在SigmaStudio软件下做图形化编程详解(五)基础音频算法

作者的话

继续整21565,用图形化编程就有非常多现成的算法可以直接用,如下所示。

硬件准备

ADSP-21565开发板 一块

产品链接:https://item.taobao.com/item.htm?id=724290880282&spm=a21xtw.29178619.0.0&ltk2=17537807403329afwimgsf3sxz1mq2xat7h

AD-HP530ICE仿真器 一个(或AD-ICE2000仿真器)

https://item.taobao.com/item.htm?id=724290880282&ltk2=17537807403329afwimgsf3sxz1mq2xat7h&spm=a21xtw.29178619.0.0

USBi仿真器 一个

https://item.taobao.com/item.htm?id=38242936768&ltk2=17537807781694bl3w9jzvg4i3etpojyy4&spm=a21xtw.29178619.0.0

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

在这里插入图片描述

最后一次强调,后面就不多说了:要用Simgastudio做开发,先在CCES下run FW,然后在sigmastudio里配置好寄存器页面,主要是加载DXE,然后再做程序。

特别注意

因为官方没有提供ADSP-21565的FW,是我自己改的,也许,可能,maybe会有些小bug,内存分配还没有做到原厂21569那样丝滑,在连续调试在线下载程序的时候,我发现有可能出现某一个程序调试时出现爆音,杂音,这种情况应该就是FW不太稳定,跑飞了,解决办法就是硬件断电重新上电,再跑一下FW,再做Sigmastudio里的程序调试。

FW还在完善中,目前仅发现这一个问题,其他都很丝滑。

作者的话

本章写ADSP-21565在SigmaStudio里的一些基础音效算法,如果用这个做开发,一定会用到,要熟悉。

1.音量调节

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

逻辑连线:

在这里插入图片描述

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

2.多通道音量调节

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

在这里插入图片描述

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

特别特别注意,如果有杂音,就把CCES里的FW再重新运行一下,然后再用SigmaStudio在线下载程序,就没有杂音了。

3.单通道静音

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

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

在这里插入图片描述

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

在这里插入图片描述
4.立体声双声道静音

在这里插入图片描述

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

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

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

5.带压摆的静音

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

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

在这里插入图片描述

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

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

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

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

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

在这里插入图片描述

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

实用小技巧,务必掌握。

同样,目前当下的FW有可能会有噪音,如果出现,也跟之前提醒的一样,CCES重新run一下FW,再下载就没有杂音了。

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.相位

在这里插入图片描述

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

下章预告

下一章讲21565的滤波器算法。

由于给定引用未涉及ADSP - 21565 datasheet的相关内容,所以以下基于一般性的ADSP - 21565芯片知识来进行初步分析解读。 ADSP - 21565是一款数字信号处理器(DSP),它在许多高性能信号处理应用中发挥着重要作用。 ### 架构特点 - **多核架构**:ADSP - 21565通常采用多核设计,多个处理核心可以并行工作,大大提高了数据处理能力和效率。例如,多个核心可以同时处理不同的信号处理任务,如音频处理、图像处理等,从而实现实时处理复杂的信号。 - **哈佛架构**:采用哈佛架构,具有分离的程序存储器和数据存储器,使得指令和数据可以同时进行读取操作,减少了数据传输的延迟,提高了处理器的运行速度。 ### 性能参数 - **时钟频率**:较高的时钟频率决定了处理器的运算速度。ADSP - 21565能够在一定的时钟频率下稳定运行,以满足不同应用场景对处理速度的要求。 - **数据处理能力**:其每秒能够执行的指令数(MIPS)或浮点运算次数(FLOPS)等指标,反映了处理器的计算能力。在一些对实时性要求较高的应用中,如雷达信号处理、通信基站信号处理等,高数据处理能力是关键。 ### 外设接口 - **通信接口**:具备多种通信接口,如SPI、I2C、UART等,方便与其他设备进行数据通信。这些接口可以用于与传感器、存储器、显示设备等进行连接,实现数据的传输和交互。 - **数据存储接口**:支持外部存储器接口,如SDRAM、Flash等,可用于扩展处理器的存储容量,满足大量数据存储和处理的需求。 ### 应用领域 - **音频处理**:在音频系统中,ADSP - 21565可以实现音频的编码、解码、混音、降噪等功能,提供高质量的音频处理效果。 - **工业控制**:用于工业自动化控制中,对传感器数据进行实时处理和分析,实现精确的控制和监测。 - **通信领域**:在无线通信基站、卫星通信等领域,ADSP - 21565可以对信号进行调制、解调、信道编码等处理,提高通信系统的性能。 ```python # 示例代码:简单的ADSP - 21565模拟数据处理 # 假设这里是一个简单的信号处理函数 def signal_processing(input_signal): # 这里可以添加具体的信号处理算法 output_signal = input_signal * 2 # 简单的放大处理 return output_signal # 模拟输入信号 input_signal = [1, 2, 3, 4, 5] output_signal = signal_processing(input_signal) print("处理后的信号:", output_signal) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ADI_OP

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

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

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

打赏作者

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

抵扣说明:

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

余额充值