Skip to content

Commit 7394a42

Browse files
committed
streams-sd_m4a-audiokit.ino
1 parent a11f33d commit 7394a42

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/**
2+
* @file streams-sd_m4a-audiokit.ino
3+
* @author Peter Schatzmann
4+
* @brief Example for decoding M4A files on the AudioKit using the AudioBoardStream
5+
* @version 0.1
6+
* @date 2023-10-01
7+
*/
8+
9+
#include "AudioTools.h"
10+
#include "AudioTools/AudioCodecs/CodecALAC.h"
11+
#include "AudioTools/AudioCodecs/CodecAACHelix.h"
12+
#include "AudioTools/AudioCodecs/ContainerM4A.h"
13+
#include "AudioTools/AudioCodecs/MultiDecoder.h"
14+
#include "AudioTools/AudioLibs/AudioBoardStream.h" // install https://github.com/pschatzmann/arduino-audio-driver
15+
#include "SD.h"
16+
17+
MultiDecoder multi_decoder;
18+
ContainerM4A dec_m4a(multi_decoder);
19+
AACDecoderHelix dec_aac;
20+
DecoderALAC dec_alac;
21+
AudioBoardStream out(AudioKitEs8388V1);
22+
EncodedAudioOutput decoder_output(&out, &dec_m4a);
23+
File file;
24+
StreamCopy copier(decoder_output, file);
25+
26+
void setup() {
27+
Serial.begin(115200);
28+
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
29+
30+
// start AudioBoard with setup of CD pins
31+
auto cfg = out.defaultConfig(TX_MODE);
32+
cfg.sd_active = true;
33+
if (!out.begin(cfg)){
34+
Serial.println("Failed to start CSV output!");
35+
return;
36+
}
37+
38+
if (!SD.begin(PIN_AUDIO_KIT_SD_CARD_CS)){
39+
Serial.println("SD Card initialization failed!");
40+
return;
41+
}
42+
43+
file = SD.open("/m4a/aac.m4a");
44+
if (!file) {
45+
Serial.println("Failed to open file!");
46+
return;
47+
}
48+
49+
// mp4 supports alac and aac
50+
multi_decoder.addDecoder(dec_alac,"audio/alac");
51+
multi_decoder.addDecoder(dec_aac,"audio/aac");
52+
53+
// start decoder output
54+
if(!decoder_output.begin()) {
55+
Serial.println("Failed to start decoder output!");
56+
return;
57+
}
58+
59+
Serial.println("M4A decoding started...");
60+
}
61+
62+
63+
void loop() {
64+
copier.copy();
65+
}

0 commit comments

Comments
 (0)