主要内容

对Arduino硬件SD卡中存储的音频文件进行音高转换

这个例子向您展示了如何使用Simulink®Support Package for Arduino®hardware来改变存储在Arduino硬件SD卡中的音频文件的音调。金宝app金宝app

在这个例子中,你将学习如何:

  • 使用SD卡文件读取块从SD卡读取音频

  • 改变音频的音调

  • 通过连接到硬件的耳机播放处理过的音频

音高移动是修改音频信号的音高以增加或减少音高的能力。例如,当一辆高速汽车在街上超过你时,当汽车靠近你时,声音的音调会增加,当汽车远离你时,声音的音调会降低。当音频源离接收器更近或更远时,连续的信号分别以更小或更大的时间间隔到达接收器。这个时间差导致接收机听到的音频的频率发生变化。您可以通过将音频信号分割成更小的帧,对这些音频帧进行时间拉伸,然后对帧进行重新采样,以生成原始音频序列的近似值,从而执行类似的音调转换练习。这个过程模拟了根据信号处理方式增加或减少音调的效果。

所需的硬件

  • Arduino MKR Zero或任何其他支持的Arduin金宝appo硬件

  • 3.5mm音频插孔耳机(推荐)

  • USB电缆

先决条件

配置Arduino网络使用安装Arduin金宝appo硬件支持

金宝app仿真软件模型描述

为了演示如何改变音频信号的音调,这个例子使用了Simulink模型金宝apparduino_pitch

该模型根据每个区域区块的功能分为三个区域:

  • 音频源

  • 距算法

  • 距音频

open_system (“arduino_pitch”

音频源:这个子系统从sampleAudio_8kHz_8bit.wav存储在SD卡上的文件SD卡文件读取块。音频文件被设置为在音频播放完成后重复播放。

距算法:这个子系统通过遵循基于帧的方法实现了用于移动音频音调的算法。这种方法通过使用以下步骤在时间轴上扩展或压缩音频帧来改变音调:

1.将音频信号分割成固定长度的较小帧。

2.每一帧的两倍。

3.在流中插入每帧的副本以增加音频的持续时间。但这并没有改变音高。

4.向下采样的时间拉伸框架,以产生一个原始序列的近似。下采样保持原始信号的长度,而基音升高。

距音频:模拟输出块接收音高转换的音频,然后通过连接到硬件DAC0引脚的耳机播放它。

步骤1:连接Arduino硬件实现Echo效果

在开始本示例之前,我们建议您完成入门Arduino硬件的例子。

1.将USB线的微端连接到Arduino MKR Zero板上,将USB线的常规端连接到计算机上。等待硬件上PWR指示灯开始闪烁。

2.如图所示,将耳机连接到TRRS防漏罩。

a.左通道和右通道在TRRS突破的TIP和RING1上。这些通道连接到硬件的DAC0引脚。

地面在TRRS突破的环2上。接地与硬件的GND引脚相连。

步骤2:复制音频文件到SD卡

1.将SD卡插入计算机。

2.将SD卡格式化为FAT32 (file allocation table 32)格式。这个步骤是必需的,以便示例生成所需的输出。

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模型金宝app

1.打开arduino_pitch模型。

2.在音频源子系统中,SD卡文件读取块被配置为从sampleAudio_8kHz_8bit.wav文件。如果您想使用已保存在SD卡上的任何其他文件,请在文件名称参数,并在块参数对话框中指定音频文件的属性。

3.在建模选项卡中,选择模型设置

4.选择硬件实现窗格。从硬件板列表,选择您正在使用的Arduino板类型。

5.从SPI属性目标硬件资源,设置SD卡SPI SS引脚到SD卡屏蔽用于与连接的SD卡进行SPI通信的Slave Select (SS)引脚。如果您正在使用Arduino MKR Zero板,请勿做任何修改。由于MKR Zero板有一个内置的SD卡槽,支持包自动填充金宝appSD卡SPI SS引脚参数。

6.点击应用.点击好吧关闭对话框。

步骤4:在Arduino硬件上金宝app部署Simulink模型

硬件选项卡中的金宝app模式部分中,选择机上运行然后点击构建、部署和启动.这个操作在Arduino硬件上构建、下载并运行模型。你可以通过连接到硬件模拟引脚的耳机听到音调变化的音频。即使硬件与计算机断开连接,音频也会继续运行。

另请参阅

其他可以尝试的事情

部署arduino_audio_effectsArduino硬件上的模型。该模型利用MATLAB函数块实现了添加回声、混响和音高平移的算法。这种型号不需要SD卡来处理音频。