9
9
#define AUDIO_SPEAKER_BCLK 26
10
10
#define AUDIO_SPEAKER_LRC 13
11
11
#define AUDIO_SPEAKER_DIN 25
12
- #define AUDIO_SPEAKER_VOL 20
13
12
14
- // audio mic
13
+ // audio microphone
15
14
#define AUDIO_MIC_SD 2
16
15
#define AUDIO_MIC_WS 15
17
16
#define AUDIO_MIC_SCK 4
@@ -33,7 +32,7 @@ void setup() {
33
32
while (!Serial);
34
33
LOG_INFO (" Board setup started" );
35
34
36
- // speaker
35
+ // create 2s speaker
37
36
i2s_config_t i2s_speaker_config = {
38
37
.mode = (i2s_mode_t )(I2S_MODE_MASTER | I2S_MODE_TX),
39
38
.sample_rate = AUDIO_SAMPLE_RATE,
@@ -60,7 +59,7 @@ void setup() {
60
59
LOG_ERROR (" Failed to set i2s speaker pins" );
61
60
}
62
61
63
- // mic
62
+ // create i2s microphone
64
63
i2s_config_t i2s_mic_config = {
65
64
.mode = (i2s_mode_t )(I2S_MODE_MASTER | I2S_MODE_RX),
66
65
.sample_rate = AUDIO_SAMPLE_RATE,
@@ -87,13 +86,14 @@ void setup() {
87
86
LOG_ERROR (" Failed to set i2s mic pins" );
88
87
}
89
88
90
- // codec2
89
+ // run codec2 audio loopback on a separate task
91
90
xTaskCreate (&audio_task, " audio_task" , 32000 , NULL , 5 , &audio_task_);
92
91
93
92
LOG_INFO (" Board setup completed" );
94
93
}
95
94
96
95
void audio_task (void *param) {
96
+ // construct and configure codec2
97
97
c2_ = codec2_create (CODEC2_MODE_450);
98
98
if (c2_ == NULL ) {
99
99
LOG_ERROR (" Failed to create Codec2" );
@@ -107,6 +107,7 @@ void audio_task(void *param) {
107
107
LOG_INFO (" Codec2 constructed" , c2_samples_per_frame_, c2_bytes_per_frame_);
108
108
}
109
109
110
+ // run loopback record-encode-decode-playback loop
110
111
size_t bytes_read, bytes_written;
111
112
LOG_INFO (" Audio task started" );
112
113
while (true ) {
0 commit comments