主要内容

存储在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卡来处理音频。

Baidu
map