|
53 | 53 | #include <ml_types.h> |
54 | 54 |
|
55 | 55 |
|
| 56 | +typedef enum |
| 57 | +{ |
| 58 | + AUDIO_PORT_0 = 0, |
| 59 | + AUDIO_PORT_1 = 1, |
| 60 | + // Add more outputs as needed |
| 61 | +} AudioPortId; |
| 62 | + |
| 63 | + |
56 | 64 | void Audio_Setup(void); |
57 | 65 | void Audio_Output(const float *left, const float *right); |
58 | 66 | void Audio_OutputMono(const int32_t *samples); |
59 | 67 | void Audio_Output(const int32_t *samples); |
60 | 68 | void Audio_Output(const int16_t *samples); |
61 | 69 | void Audio_Output(const Q1_14 *samples); |
62 | 70 | void Audio_Output(const int16_t *left, const int16_t *right); |
| 71 | +void Audio_Output(AudioPortId audio_port, const int16_t *left, const int16_t *right); |
63 | 72 | void Audio_Output(const Q1_14 *left, const Q1_14 *right); |
64 | 73 | void Audio_Input(float *left, float *right); |
65 | 74 | void Audio_Input(Q1_14 *left, Q1_14 *right); |
@@ -156,9 +165,8 @@ static float saw_right[SAMPLE_BUFFER_SIZE]; |
156 | 165 | static int32_t saw_i32[SAMPLE_BUFFER_SIZE]; |
157 | 166 | #endif |
158 | 167 | #ifdef OUTPUT_SINE_TEST |
159 | | -static float sin_left[SAMPLE_BUFFER_SIZE]; |
160 | | -static float sin_right[SAMPLE_BUFFER_SIZE]; |
161 | | -static int32_t sine_i32[SAMPLE_BUFFER_SIZE]; |
| 168 | +static float sin[4][SAMPLE_BUFFER_SIZE]; |
| 169 | +static int32_t sine_i32[4][SAMPLE_BUFFER_SIZE]; |
162 | 170 | #endif |
163 | 171 |
|
164 | 172 | void Audio_Setup(void) |
@@ -192,27 +200,28 @@ void Audio_Setup(void) |
192 | 200 | w *= 1.0f / ((float)SAMPLE_BUFFER_SIZE); |
193 | 201 | w *= 2.0f * M_PI; |
194 | 202 | float sine = sin(w); |
195 | | - sin_left[i] = sine; |
196 | | - sin_right[i] = sin(w * 2.0f); |
197 | | - sine *= 1073741824; |
198 | | - sine_i32[i] = sine; |
| 203 | + for (int n = 0; n < 4; n++) |
| 204 | + { |
| 205 | + sine = sin(n * w * 2.0f); |
| 206 | + sin[n][i] = sine; |
| 207 | + sine *= 1073741824; |
| 208 | + sine_i32[n][i] = sine; |
| 209 | + } |
199 | 210 | } |
200 | 211 | #endif |
201 | 212 |
|
202 | 213 | #ifdef ESP32_AUDIO_KIT |
203 | 214 | #ifdef ES8388_ENABLED |
204 | | - ES8388_Setup(); |
205 | | - ES8388_SetIn2OoutVOL(0, 0); |
| 215 | + ES8388_Setup(ES8388_ID0); |
| 216 | + ES8388_SetIn2OoutVOL(ES8388_ID0, 0.0f); |
206 | 217 | #else |
207 | 218 | ac101_setup(); |
208 | 219 | #endif |
209 | 220 | #endif |
210 | 221 |
|
211 | 222 | #if defined(DUAL_CODEC_ENABLED) && defined(ES8388_ENABLED) |
212 | | - ES8388_SelectCodec(1); |
213 | | - ES8388_Setup(); |
214 | | - ES8388_SetIn2OoutVOL(0, 0); |
215 | | - ES8388_SelectCodec(0); |
| 223 | + ES8388_Setup(ES8388_ID1); |
| 224 | + ES8388_SetIn2OoutVOL(ES8388_ID1, 0.0f); |
216 | 225 | #endif |
217 | 226 |
|
218 | 227 | #ifdef WM8978_ENABLED |
@@ -644,7 +653,7 @@ void Audio_Output(const Q1_14 *left, const Q1_14 *right) |
644 | 653 | } |
645 | 654 |
|
646 | 655 | #ifndef ARDUINO_SEEED_XIAO_M0 |
647 | | -void Audio_Output(const int16_t *left, const int16_t *right) |
| 656 | +void Audio_Output(AudioPortId audio_port, const int16_t *left, const int16_t *right) |
648 | 657 | { |
649 | 658 | #ifdef ESP8266 |
650 | 659 | for (int i = 0; i < SAMPLE_BUFFER_SIZE; i++) |
@@ -709,7 +718,7 @@ void Audio_Output(const int16_t *left, const int16_t *right) |
709 | 718 | } |
710 | 719 | } |
711 | 720 | #else |
712 | | - i2s_write_stereo_samples_i16(left, right, SAMPLE_BUFFER_SIZE); |
| 721 | + i2s_write_stereo_samples_i16(left, right, SAMPLE_BUFFER_SIZE, audio_port); |
713 | 722 | #endif |
714 | 723 | #endif /* ESP32 */ |
715 | 724 |
|
@@ -836,6 +845,11 @@ void Audio_Output(const int16_t *left, const int16_t *right) |
836 | 845 | #endif |
837 | 846 | #endif /* PICO_AUDIO_I2S */ |
838 | 847 | } |
| 848 | + |
| 849 | +void Audio_Output(const int16_t *left, const int16_t *right) |
| 850 | +{ |
| 851 | + Audio_Output(AUDIO_PORT_0, left, right); |
| 852 | +} |
839 | 853 | #endif |
840 | 854 |
|
841 | 855 | #if (defined ESP32) || (defined TEENSYDUINO) || (defined ARDUINO_DAISY_SEED) || (defined ARDUINO_GENERIC_F407VGTX) || (defined ARDUINO_DISCO_F407VG) || (defined ARDUINO_BLACK_F407VE) || (defined ARDUINO_ARCH_RP2040) || (((defined ARDUINO_RASPBERRY_PI_PICO) || (defined ARDUINO_GENERIC_RP2040)) && (defined RP2040_AUDIO_PWM)) |
@@ -868,8 +882,8 @@ void Audio_Output(const float *left, const float *right) |
868 | 882 | right = saw_right; |
869 | 883 | #endif |
870 | 884 | #ifdef OUTPUT_SINE_TEST |
871 | | - left = sin_left; |
872 | | - right = sin_right; |
| 885 | + left = sin[0]; |
| 886 | + right = sin[1]; |
873 | 887 | #endif |
874 | 888 |
|
875 | 889 | #ifdef ESP32 |
|
0 commit comments