prepare()

描述

预备从档案读取至缓冲区的音频样本并且设置音量。

语法


Audio.prepare(buffer, samples, volume);

参数

buffer(short):储存音频样本的缓冲区。

samples(int):缓冲区中储存的音频样本数量。

volume(int):一个 10 位元的数字,代表音频的音量。0 表示没有声音,1023 是最大声。

回传

无回传值

范例

#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.