作者的话
查看以前写的文章,竟然漏了ADAU1452的教程,这个系列补上。
硬件准备
ADAU1452EVB开发板 一块
USBi仿真器 一个
5V2A电源适配器一个
3.5mm音频线两条
MINI USB线一根
模拟音频输入音源:手机
模拟音频输出设备:耳机
软件准备
首选需要安装 SigmaStudio 软件,这个软件是开发 ADAU1452 的唯一工具,你的所有功能都依赖这个软件来实现,所以请随时关注 ADI 官网上的软件更新情况,确保自己安装的是最新的 SigmaStudio 软件,已获得更多更稳定的功能。
目前最新的SigmaStudio软件版本是4.7,而且应该不会再有更新了,所以我们如果用SigmaStudio,就固定在4.7版。
这个软件是完全免费的,直接下载安装即可。
特别注意,安装 SigmaStudio 时,有可能需要你安装 Microsoft.NET Framework Ver4.0,如果你的机器之前没有安装过此类软件包。 最新版本的.net Framework 可到网站下载。
软件都装好了,就可以正式开启我们的 ADAU1452 的开发之旅了!
开发平台搭建示意图

ADAU1452 的开发 6:单通道静音
静音也是音频调试中最常见的功能,如果实现静音?基于例程 5,我们看一看下面的程序。

在静音模块上用鼠标点勾,就把这一路音频给静音了。这个例程建议大家在 16/17 的输出接口这接耳机,就会很清晰的听到,当点击静音后,一个耳朵被静音听不到了,另一个耳朵仍然持续播放。
ADAU1452 的开发 7:立体声双通道静音
再看一个静音的例程,同时也能理解一下立体声的左右声道。

这个例程,就两个通道全部加了静音模块,通过 USBi 下载完程序后,想要对哪路音频静音,只需要鼠标点击模块打勾,就静音啦。还是用耳机听比较清楚,如果是接外放的音箱,只能听到声音弱了一点。
ADAU1452 的开发 8:带压摆的静音
在 SigmaDSP 的算法模块中,会发现很多都有带 SW 的模块,拖出来跟不带的一模一样,这个是干嘛的?注意,非常重要,这个带 SW 的就叫带压摆的模块!
以静音这个模块来讲,见下面的图示:

压摆什么意思?这个得从这个模块的算法来讲了:
No Slew:不带压摆的静音,启用时,可立即使信号静音,不存在增益调节。相对于压摆算法,这种算法需要较少资源;但是实时切换时,可能导致不连续现象(滴答声和爆裂声)
SW:压摆类算法,可从 0dB 增益平滑过渡至静音,并从静音过渡至 0dB 增益。这种压摆算法由软件(故称为"SW")实现,比"无压摆"算法要求更多指令。
所以综上所述,无压摆的模块,在音效框架很复杂的时候,实时切换,有可能会出现爆破音。用带压摆的模块就可以很好的解决这个问题。有些用户可能就要说了,那就全都用带 SW 的模块不就好了?不是这样的,DSP 的内部资源是很有限的,带压摆的算法会占用更多的资源,全都用SW,可能会导致你用不了太多的算法模块了,这里就要有一个权衡,如果用不带压摆的模块,实测没有爆破音,那就放心大胆的用,如果发现爆破音,再换带压摆的模块来解决吧,我们还是希望 DSP 能用更多的算法模块的。
下面这个例程就是带压摆的静音,因为程序简单,跟普通静音没什么区别,但这个章节技术点一定要掌握。

ADAU1452 的开发 9:两进四出-开关选择声道输出
音源进来后,有选择的输出,这个常用的功能,在 ADAU1452 上是怎么做的,下面这个例程就来说一说 DSP 的开关选择功能。

SigmaDSP 提供了各种各样的开关模块供你使用,我们来看一个最简单的二进四出,自己通过开关控制,选择是从哪路输出的例程:


ADAU1452 的开发 10:二进八出-开关选择声道输出

模拟音源从 0/1 输入,通过 4 选 1 开关,选择输出到哪个接口。
ADAU1452 的开发 11:四进八出-开关选择声道输出

模拟音源 0/1 输入,2 选 1 开关选择 0/1 或者 16/17 输出;模拟音源 16/17 输入,2 选 1 开关选择 32/33 输出或者 40/41 输出。
ADAU1452 的开发 12:混音-四进二出
混音是我们做音效时非常常见的功能,在音频框架内,讲音频进行各种特效处理后,再混音输出,会得到想要的效果,这里简单的做几个混音的程序,让大家能了解这个功能是如何在SigmaDSP 里实现的。

看下面这个程序:

两个立体声同时输入,通过 2 个 2 混 1 的模块,把每一路立体声混成一个声道,送到另一个2 混 1 的混频器中进行混音,再输出到 T,用 T 分别推送到 0 和 1 接口,通过 0/1 输出口输出,实现了四混二出的功能。

在这个程序里,我用到了一个多控制混频器,可将一组增益不同的输入信号混合成一个输出信号,也就是说我通过调整这两个圆圈的增益,让 0/1 输入音源和 16/17 输入音源可以有不同的音量增益,再进行混音输出,挺实用的,用户可以自行测试效果。
ADAU1452 的开发 13:混音-两进两出自混
这是一种增强音色的处理方法:

输入音源分一下,上面的直通,下面的做了音量加减的处理,再把他们混在一起输出。我在下面只做了音量的加减,但实际上真实的开发中,会让这个立体声分别做各种音效处理,再混在一起输出,达到想要的音色,这些我会在后面的例程中慢慢展现。
特别注意,开发板的例程旨在教会用户怎么去用模块,至于模块怎么组合才能达到想要的效果,这个就需要用户专业的声学知识,以及慢慢的调试了。
ADAU1452 的开发 14:分频器-直通分频
有了混音,自然就会有分频,分频器,可将一个输入信号分离成两个或更多输出,在 SigmaDSP的这些列表里:

看一个简单的例子:

ADAU1452 的开发 15:分频器-分频音量可调

用了一个多控制分频器,一个输入信号分离成两个或更多输出,并可对各个输出的增益设置进行独立控制,想让输出 0 音量大点或者小点,就调上面的圆圈,想让输出 1 音量大点或者小点,就调下面的圆圈。
ADAU1452 的开发 16:分频器-高低音分频
分频可以是直通的分频,DSP 还可以支持把高低音分离出来,高音走高音通道,低音走低音通道,我们来看一下是怎么做的。

输入音源左右声道,经过分频处理,低音接 0/1 输出口输出,高音接 16/17 输出口输出,大家可以分别听一下,效果非常明显。
ADAU1452 的开发 17:分频器-高中低音分频
将左右声道的立体声进行高中低音分频输出,例程如下:

0/1 输入音源进行高中低音分频,低音从 0/1 输出,高音从 16/17 输出,中音从 32/33 输出。
ADAU1452 的开发 18:线性增益
"线性增益"(Linear Gain)模块以文本字段中指定的值对信号进行缩放。在例程 17 里,我假定一下,感觉低音输出的音量太小,我要对他进行放大,于是我就在这个通道上加上限行增益算法进行响度的补偿!

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