From 86ae5cdfa49ec304d8e5b97e60cb368a64a60ef9 Mon Sep 17 00:00:00 2001 From: Massimo Banzi Date: Fri, 28 Sep 2012 22:49:15 -0400 Subject: [PATCH] added simple audio player example --- .../SimpleAudioPlayer/SimpleAudioPlayer.ino | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 hardware/arduino/sam/libraries/Audio/examples/SimpleAudioPlayer/SimpleAudioPlayer.ino diff --git a/hardware/arduino/sam/libraries/Audio/examples/SimpleAudioPlayer/SimpleAudioPlayer.ino b/hardware/arduino/sam/libraries/Audio/examples/SimpleAudioPlayer/SimpleAudioPlayer.ino new file mode 100644 index 000000000..07cae483f --- /dev/null +++ b/hardware/arduino/sam/libraries/Audio/examples/SimpleAudioPlayer/SimpleAudioPlayer.ino @@ -0,0 +1,77 @@ +#include +#include +#include + +void setup() +{ + // debug output at 115.2K + Serial.begin(115200); + + // 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("fadh.wav"); + if (!myFile) { + // if the file didn't open, print an error and stop + Serial.println("error opening fadh.wav"); + while (true); + } + + const int S=1024; // Number of samples to read in block + int16_t 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 = analogRead(2); + 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) ; +} + + +void prepare(int16_t *buffer, int S, int volume) { + uint16_t *ubuffer = (uint16_t*) buffer; + for (int i=0; i>= 4; + } +} +