|
|
|
|
|
|
|
|
|
|
|
// Simple MP3 file player example |
|
|
|
|
|
// |
|
|
|
|
|
// Requires the prop-shield and Teensy 3.2 or 3.1 |
|
|
|
|
|
// This example code is in the public domain. |
|
|
|
|
|
|
|
|
|
|
|
#include <Audio.h> |
|
|
|
|
|
#include <Wire.h> |
|
|
|
|
|
#include <SPI.h> |
|
|
|
|
|
#include <SerialFlash.h> |
|
|
|
|
|
#include <play_sd_mp3.h> // https://github.com/FrankBoesing/Arduino-Teensy-Codec-lib |
|
|
|
|
|
//#include <play_sd_aac.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GUItool: begin automatically generated code |
|
|
|
|
|
//AudioPlaySdWav playSdWav1; //xy=154,422 |
|
|
|
|
|
AudioPlaySdMp3 playMp31; //xy=154,422 |
|
|
|
|
|
AudioMixer4 mixer1; //xy=327,432 |
|
|
|
|
|
AudioOutputAnalog dac1; //xy=502,412 |
|
|
|
|
|
AudioConnection patchCord1(playMp31, 0, mixer1, 0); |
|
|
|
|
|
AudioConnection patchCord2(playMp31, 1, mixer1, 1); |
|
|
|
|
|
AudioConnection patchCord3(mixer1, dac1); |
|
|
|
|
|
// GUItool: end automatically generated code |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define PROP_AMP_ENABLE 5 |
|
|
|
|
|
#define FLASH_CHIP_SELECT 6 |
|
|
|
|
|
|
|
|
|
|
|
void setup() { |
|
|
|
|
|
AudioMemory(8); //4 |
|
|
|
|
|
delay(2000); |
|
|
|
|
|
|
|
|
|
|
|
// Start SerialFlash |
|
|
|
|
|
if (!SerialFlash.begin(FLASH_CHIP_SELECT)) { |
|
|
|
|
|
while (1) { |
|
|
|
|
|
Serial.println ("Cannot access SPI Flash chip"); |
|
|
|
|
|
delay (1000); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Start Amplifier |
|
|
|
|
|
pinMode(PROP_AMP_ENABLE, OUTPUT); |
|
|
|
|
|
digitalWrite(PROP_AMP_ENABLE, HIGH); // Enable Amplifier |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void playFile(const char *filename) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
SerialFlashFile ff = SerialFlash.open(filename); |
|
|
|
|
|
Serial.print("Playing file: "); |
|
|
|
|
|
Serial.println(filename); |
|
|
|
|
|
|
|
|
|
|
|
uint32_t sz = ff.size(); |
|
|
|
|
|
uint32_t pos = ff.getFlashAddress(); |
|
|
|
|
|
|
|
|
|
|
|
// Start playing the file. This sketch continues to |
|
|
|
|
|
// run while the file plays. |
|
|
|
|
|
playMp31.play(pos,sz); |
|
|
|
|
|
|
|
|
|
|
|
// Simply wait for the file to finish playing. |
|
|
|
|
|
while (playMp31.isPlaying()) {} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void loop() { |
|
|
|
|
|
playFile("rain.mp3"); |
|
|
|
|
|
delay(1000); |
|
|
|
|
|
} |