begin()
描述
藉由给予取样率和缓冲时间的大小初始化 Audio 函式库。
语法
Audio.begin(rate, size);
参数
rate(int):音频档案的取样率。如果音频是立体声,取样率必须乘以 2(如. 44100hz 立体声 = 88200)。
size(int):音频缓冲时间的大小,以毫秒为单位。
回传
无回传值
Example
#include <SD.h>
#include <Audio.h>
void setup()
{
// 输出鲍率设定
Serial.begin(9600);
// 设定 SD 卡
Serial.print("Initializing SD card...");
if (!SD.begin()) {
Serial.println(" failed!");
return;
}
Serial.println(" done.");
// 44100hz 立体声 => 88200 取样率
// 100 毫秒的缓冲时间
Audio.begin(88200, 100);
}
void loop()
{
int count=0;
// 从 SD 卡开启音频档案
File myFile = SD.open("test.wav");
if (!myFile) {
// 如果开启档案失败,印出错误讯息并中止
Serial.println("error opening test.wav");
while (true);
}
const int S=1024; // 每个区块的取样个数
short buffer[S];
Serial.print("Playing");
// 直到档案结束
while (myFile.available()) {
// 从档案读取资料至 buffer
myFile.read(buffer, sizeof(buffer));
// 预备样本
int volume = 1023;
Audio.prepare(buffer, S, volume);
// 输出缓冲区中的音频样本
Audio.write(buffer, S);
// 每一百个区块印出一个 '.'
count++;
if (count == 100) {
Serial.print(".");
count = 0;
}
}
myFile.close();
Serial.println("End of file. Thank you for listening!");
while (true) ;
}
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
