存储在Arduino硬件SD卡中的音频文件的音调偏移
此示例向您展示如何使用Simulink®Arduino®硬件支持包来转换存储在Arduino硬件的SD卡中的音频文件的音调。
在这个例子中,你将学习如何:
使用SD卡文件读取块从SD卡读取音频
改变音频的音调
通过连接到硬件的耳机播放处理后的音频
音调偏移是修改音频信号的音调以增加或减少音调的能力。例如,当一辆快速行驶的汽车在街道上超过你时,汽车发出的声音的音调会随着汽车接近你而增加,而随着汽车远离你而降低。当音频源靠近或远离接收器时,连续的信号分别以较小或较大的时间间隔到达接收器。这个时间差会导致接收器听到的音频频率发生变化。您可以通过将音频信号分割为更小的帧来执行类似的音调转换练习,时间拉伸这些音频帧,然后重新采样帧以生成原始音频序列的近似值。这个过程根据信号的处理方式来模拟增加或减少音调的效果。
所需的硬件
Arduino MKR Zero或任何其他支持的Arduino硬件
3.5mm音频插孔耳机(推荐)
USB电缆
先决条件
配置Arduino网络使用安装Arduino硬件支持.
Simulink模型说明
为了展示如何改变音频信号的音调,本例使用Simulink模型arduino_pitch.
该模型根据每个区域的块的功能分为三个区域:
音频源
距算法
距音频
open_system (“arduino_pitch”)
音频源:该子系统从sampleAudio_8kHz_8bit.wav
文件存储在SD卡上读取SD卡文件块。音频文件设置为在音频播放结束后重复播放。
距算法:该子系统采用基于帧的方法实现了音频的音调变换算法。这种方法通过以下步骤在时间轴上扩展或压缩音频帧来改变音调:
1.将音频信号分割成固定长度的小帧。
2.每帧翻倍。
3.在流中插入每个帧的副本以增加音频的持续时间。但这不会改变音高。
4.对时间拉伸的框架进行向下采样,以生成原始序列的近似值。下采样保留原始信号的长度,而pitch是提高的。
距音频:模拟输出块接受音调变化的音频,然后通过连接到硬件的DAC0引脚的耳机播放。
步骤1:连接Arduino硬件实现Echo Effect
在开始本示例之前,我们建议您完成Arduino硬件入门的例子。
1.将USB线的微端连接到Arduino MKR Zero板上,将USB线的常规端连接到计算机上。等待硬件上的PWR指示灯开始闪烁。
2.如图所示,将耳机连接到TRRS breakout shield上。
a.左右通道分别位于TRRS breakout的TIP和RING1上。这些通道连接到硬件的DAC0引脚。
b.接地在TRRS爆发的RING2上。接地端连接到硬件的GND引脚。
第二步:复制音频文件到SD卡
1.将SD卡插入计算机。
2.将SD卡格式化为文件分配表32 (FAT32)格式。此步骤是必需的,以便示例生成所需的输出。
3.在MATLAB®命令窗口中,执行哪一个
命令。属性的位置sampleAudio_8kHz_8bit.wav
在你的电脑里存档。复制sampleAudio_8kHz_8bit.wav
然后将其粘贴到SD卡的根目录。
这sampleAudio_8kHz_8bit.wav
4.将SD卡插入Arduino MKR Zero板。如果您使用的单板没有内置插槽,请使用SD卡护罩。
步骤3:配置Arduino Pitch Shift Simulink模型
1.打开arduino_pitch模型。
2.在音频源子系统中,SD卡文件读取块被配置为从sampleAudio_8kHz_8bit.wav
文件。如果要使用已保存在SD卡上的任何其他文件,请在文件名称参数,并在块参数对话框中指定音频文件的属性。
3.在建模选项卡中,选择模型设置.
4.选择硬件实现窗格。从硬件板列表中,选择您正在使用的Arduino板类型。
5.从SPI属性下目标硬件资源,设置SD卡SPI SS引脚到SD卡护罩用于与连接的SD卡进行SPI通信的从选择(SS)引脚。如果您使用的是Arduino MKR Zero板,请不要进行任何修改。由于MKR Zero板有一个内置的SD卡插槽,支持包自动填充SD卡SPI SS引脚参数。
6.点击应用.点击好吧关闭对话框。
步骤4:在Arduino硬件上部署Simulink模型
在硬件选项卡中的Simulink模型模式部分中,选择在船上跑然后点击构建、部署和启动.该操作将在Arduino硬件上构建、下载并运行模型。您可以通过连接到硬件上的模拟引脚的耳机听到音调变化的音频。即使硬件与计算机断开连接,音频也会继续运行。
另请参阅
其他可以尝试的事情
部署arduino_audio_effectsArduino硬件上的模型。该模型利用MATLAB函数块实现了音频回波、混响的添加和基音偏移算法。该型号不需要SD卡来处理音频。