Home Page | Language Reference (extended) | SD Reference | Libraries | Comparison | Changes

Audio

prepare()

Description

Prepares audio samples from the named file to the audio buffer, and sets the volume.

Syntax

Audio.prepare(buffer, samples, volume);

Parameters

buffer (short) : the named buffer holding the audio file.

samples (int) : number of samples to write

volume (int) : a 10-bit number representing the volume of the audio being played. 0 turns the sound off, 1023 is the maximum volume.

Returns

nothing

Example

/* Demonstrates the use of the Audio library for the Arduino Due Hardware required :
 *Arduino shield with a SD card on CS 4 (the Ethernet sheild will work)
 *Audio amplifier circuit with speaker attached to DAC0 Original by Massimo Banzi September 20, 2012
 Modified by Scott Fitzgerald October 19, 2012*/
#include <SD.h>
#include <SPI.h>
#include <Audio.h> void setup ( )
{
  // debug output at 9600 baud
  Serial.begin ( 9600 ) ;   // setup SD-card
  Serial.print ( "Initializing SD card..." ) ;
  if ( !SD.begin ( 4 ) ) {
    Serial.println ( " failed!" ) ;
    return ;
  }
  Serial.println ( " done." ) ;
  // hi-speed SPI transfers
  SPI.setClockDivider ( 4 ) ;   // 44100Khz stereo => 88200 sample rate
  // 100 mSec of prebuffering.
  Audio.begin ( 88200 , 100 ) ;
} void loop ( )
{
  int count= 0 ;   // open wave file from sdcard
  File myFile = SD.open ( "test.wav" ) ;
  if ( !myFile) {
    // if the file didn't open, print an error and stop
    Serial.println ( "error opening test.wav" ) ;
    while ( true ) ;
  }   const int S= 1024 ; // Number of samples to read in block
  short buffer[S] ;   Serial.print ( "Playing" ) ;
  // until the file is not finished
  while (myFile.available ( ) ) {
    // read from the file into buffer
    myFile.read (buffer, sizeof(buffer) ) ;     // Prepare samples
    int volume = 1024 ;
    Audio.prepare (buffer, S, volume) ;
    // Feed samples to audio
    Audio.write (buffer, S) ;     // Every 100 block print a '.'
    count++;
    if (count == 100 ) {
      Serial.print ( "." ) ;
      count = 0 ;
    }
  }
  myFile.close ( ) ;   Serial.println ( "End of file. Thank you for listening!" ) ;
  while ( true ) ;
}

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.