Plays audio samples from an array stored in flash. Values are from an audio *.wav file that was automatically converted to a C array data source file. 8-bit samples used in this version.
Fork of flash_audio_player by
See https://os.mbed.com/users/4180_1/notebook/using-flash-to-play-audio-clips/ for details on setup
Diff: main.cpp
- Revision:
- 1:bd7bef7df00b
- Parent:
- 0:e4f991474a45
diff -r e4f991474a45 -r bd7bef7df00b main.cpp --- a/main.cpp Sat Oct 21 20:53:36 2017 +0000 +++ b/main.cpp Sun Oct 22 16:12:03 2017 +0000 @@ -3,21 +3,30 @@ Ticker sampletick; DigitalOut myled(LED1); //Plays Audio Clip using Array in Flash -// +//8-bit audio samples used //setup const array in flash with audio values //from free wav file conversion tool at //http://ccgi.cjseymour.plus.com/wavtocode/wavtocode.htm //see https://os.mbed.com/users/4180_1/notebook/using-flash-to-play-audio-clips/ -#include "cylonbyc.h" +#include "cylon8bit.h" #define sample_freq 11025.0 //get and set the frequency from wav conversion tool GUI int i=0; +union short_or_char { + short s; + char c[2]; +}; + +union short_or_char sample; + + //interrupt routine to play next audio sample from array in flash void audio_sample () { - speaker.write_u16(sound_data[i]); + sample.c[1] = sound_data[i]; + speaker.write_u16(sample.s); i++; if (i>= NUM_ELEMENTS) { i = 0; @@ -27,6 +36,7 @@ } int main() { + sample.c[0] = 0; //setup fast byte to short conversion using union while(1) { myled = 1; //use a ticker to play send next audio sample value to D/A