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