@@ -151,14 +151,13 @@ I2S i2s(OUTPUT);
151151#endif
152152
153153#ifdef OUTPUT_SAW_TEST
154- static float saw_left [SAMPLE_BUFFER_SIZE ];
155- static float saw_right [SAMPLE_BUFFER_SIZE ];
156- static int32_t saw_i32 [SAMPLE_BUFFER_SIZE ];
154+ static float test_signal_saw_left [SAMPLE_BUFFER_SIZE ];
155+ static float test_signal_saw_right [SAMPLE_BUFFER_SIZE ];
156+ static int32_t test_signal_saw_i32 [SAMPLE_BUFFER_SIZE ];
157157#endif
158158#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 ];
159+ static float test_signal_sin [4 ][SAMPLE_BUFFER_SIZE ];
160+ static int32_t test_signal_sine_i32 [4 ][SAMPLE_BUFFER_SIZE ];
162161#endif
163162
164163void Audio_Setup (void )
@@ -176,10 +175,10 @@ void Audio_Setup(void)
176175 {
177176 float saw = ((float )i * 2.0f ) / ((float )SAMPLE_BUFFER_SIZE );
178177 saw -= 1.0f ;
179- saw_left [i ] = saw ;
180- saw_right [i ] = saw ;
178+ test_signal_saw_left [i ] = saw ;
179+ test_signal_saw_right [i ] = saw ;
181180 saw *= 1073741824 ;
182- saw_i32 [i ] = saw ;
181+ test_signal_saw_i32 [i ] = saw ;
183182 }
184183#endif
185184#ifdef OUTPUT_SINE_TEST
@@ -196,10 +195,13 @@ void Audio_Setup(void)
196195 w *= 1.0f / ((float )SAMPLE_BUFFER_SIZE );
197196 w *= 2.0f * M_PI ;
198197 float sine = sin (w );
199- sin_left [i ] = sine ;
200- sin_right [i ] = sin (w * 2.0f );
201- sine *= 1073741824 ;
202- sine_i32 [i ] = sine ;
198+ for (int n = 0 ; n < 4 ; n ++ )
199+ {
200+ sine = sin (n * w * 2.0f );
201+ test_signal_sin [n ][i ] = sine ;
202+ sine *= 1073741824 ;
203+ test_signal_sine_i32 [n ][i ] = sine ;
204+ }
203205 }
204206#endif
205207
@@ -249,10 +251,10 @@ void Audio_Setup(void)
249251#else /* #ifndef RP2350_USE_I2S_ML_LIB */
250252 rp2350_i2s_init (PICO_AUDIO_I2S_DATA_PIN , PICO_AUDIO_I2S_CLOCK_PIN_BASE );
251253 Serial .printf ("rp2350_i2s_init\n" );
252- Serial .printf ("\tclock_pin_base: %u (->BCK)\n" , PICO_AUDIO_I2S_DATA_PIN );
253- Serial .printf ("\tdata_pin: %u (-> DIN) \n" , PICO_AUDIO_I2S_CLOCK_PIN_BASE );
254- Serial .printf ("\tWCLK/LCK: %u\n" , PICO_AUDIO_I2S_CLOCK_PIN_BASE + 1 );
255254#endif /* #endif RP2350_USE_I2S_ML_LIB */
255+ Serial .printf ("\tclock_pin_base: %u (->BCK)\n" , PICO_AUDIO_I2S_CLOCK_PIN_BASE );
256+ Serial .printf ("\tdata_pin: %u (-> DIN) \n" , PICO_AUDIO_I2S_DATA_PIN );
257+ Serial .printf ("\tWCLK/LCK: %u\n" , PICO_AUDIO_I2S_CLOCK_PIN_BASE + 1 );
256258#endif
257259
258260
@@ -268,9 +270,13 @@ void Audio_Setup(void)
268270#ifdef RP2040_AUDIO_PWM
269271 uint8_t pwmPinNumber = RP2040_AUDIO_PWM_PIN ;
270272 Serial .printf ("Initialize pwm audio used without DAC pin %d + pin %d:\n" , pwmPinNumber , pwmPinNumber + 1 );
273+ Serial .printf (" F_CPU: %d\n" , F_CPU );
271274 Serial .printf (" sample rate: %d\n" , SAMPLE_RATE );
272275 Serial .printf (" buffer size: %d\n" , SAMPLE_BUFFER_SIZE );
273- RP2040_Audio_Pwm_Init (pwmPinNumber , SAMPLE_RATE , WavPwmDataBuff , WavPwmDataBuff2 , SAMPLE_BUFFER_SIZE );
276+ uint64_t sampleRate_at_125MHz = SAMPLE_RATE ;
277+ sampleRate_at_125MHz *= 125000000ULL ;
278+ sampleRate_at_125MHz /= ((uint64_t )F_CPU );
279+ RP2040_Audio_Pwm_Init (pwmPinNumber , sampleRate_at_125MHz , WavPwmDataBuff , WavPwmDataBuff2 , SAMPLE_BUFFER_SIZE );
274280#endif
275281
276282#if 0
@@ -385,7 +391,7 @@ void ProcessAudio(uint16_t *buff, size_t len)
385391 }
386392}
387393
388- #endif
394+ #endif /* (defined ARDUINO_SEEED_XIAO_M0) || (defined SEEED_XIAO_M0) */
389395
390396#ifdef AUDIO_PRINT_STATS
391397#if (defined ARDUINO_RASPBERRY_PI_PICO ) || (defined ARDUINO_GENERIC_RP2040 )
@@ -425,10 +431,10 @@ void Audio_Output(const int16_t *samples)
425431void Audio_OutputMono (const int32_t * samples )
426432{
427433#ifdef OUTPUT_SAW_TEST
428- samples = saw_i32 ;
434+ samples = ( const int32_t * ) test_signal_saw_i32 ;
429435#endif
430436#ifdef OUTPUT_SINE_TEST
431- samples = sine_i32 ;
437+ samples = ( const int32_t * ) test_signal_sine_i32 ;
432438#endif
433439
434440#ifdef ESP8266
@@ -525,7 +531,7 @@ void Audio_OutputMono(const int32_t *samples)
525531 memcpy (out_temp [1 ], sig_f , sizeof (out_temp [1 ]));
526532
527533 dataReady = false;
528- #endif /* ARDUINO_DAISY_SEED */
534+ #endif /* (defined ARDUINO_DAISY_SEED) || (defined STM32H7xx) */
529535
530536#if (defined ARDUINO_SEEED_XIAO_M0 ) || (defined SEEED_XIAO_M0 )
531537#ifdef CYCLE_MODULE_ENABLED
@@ -539,7 +545,7 @@ void Audio_OutputMono(const int32_t *samples)
539545#ifdef CYCLE_MODULE_ENABLED
540546 calcCycleCount ();
541547#endif
542- #endif /* ARDUINO_SEEED_XIAO_M0 */
548+ #endif /* (defined ARDUINO_SEEED_XIAO_M0) || (defined SEEED_XIAO_M0) */
543549
544550#ifdef ARDUINO_DISCO_F407VGxx
545551 int16_t mono_s16 [SAMPLE_BUFFER_SIZE ];
@@ -862,12 +868,12 @@ void Audio_Input(float *left __attribute__((__unused__)), float *right __attribu
862868void Audio_Output (const float * left , const float * right )
863869{
864870#ifdef OUTPUT_SAW_TEST
865- left = saw_left ;
866- right = saw_right ;
871+ left = ( const float * ) test_signal_saw_left ;
872+ right = ( const float * ) test_signal_saw_right ;
867873#endif
868874#ifdef OUTPUT_SINE_TEST
869- left = sin_left ;
870- right = sin_right ;
875+ left = ( const float * ) test_signal_sin [ 0 ] ;
876+ right = ( const float * ) test_signal_sin [ 1 ] ;
871877#endif
872878
873879#ifdef ESP32
0 commit comments