@@ -77,7 +77,7 @@ void common_hal_audiodelays_echo_construct(audiodelays_echo_obj_t *self, uint32_
7777
7878 // Allocate the echo buffer for the max possible delay, echo is always 16-bit
7979 self -> max_delay_ms = max_delay_ms ;
80- self -> max_echo_buffer_len = self -> sample_rate / 1000.0f * max_delay_ms * (self -> channel_count * sizeof (uint16_t )); // bytes
80+ self -> max_echo_buffer_len = ( uint32_t )( self -> sample_rate / 1000.0f * max_delay_ms ) * (self -> channel_count * sizeof (uint16_t )); // bytes
8181 self -> echo_buffer = m_malloc (self -> max_echo_buffer_len );
8282 if (self -> echo_buffer == NULL ) {
8383 common_hal_audiodelays_echo_deinit (self );
@@ -129,11 +129,11 @@ void common_hal_audiodelays_echo_set_delay_ms(audiodelays_echo_obj_t *self, mp_o
129129void recalculate_delay (audiodelays_echo_obj_t * self , mp_float_t f_delay_ms ) {
130130 if (self -> freq_shift ) {
131131 // Calculate the rate of iteration over the echo buffer with 8 sub-bits
132- self -> echo_buffer_rate = MAX (self -> max_delay_ms / f_delay_ms * 256.0f , 1.0 );
132+ self -> echo_buffer_rate = ( uint32_t ) MAX (self -> max_delay_ms / f_delay_ms * MICROPY_FLOAT_CONST ( 256.0 ), MICROPY_FLOAT_CONST ( 1.0 ) );
133133 self -> echo_buffer_len = self -> max_echo_buffer_len ;
134134 } else {
135135 // Calculate the current echo buffer length in bytes
136- uint32_t new_echo_buffer_len = self -> sample_rate / 1000.0f * f_delay_ms * (self -> channel_count * sizeof (uint16_t ));
136+ uint32_t new_echo_buffer_len = ( uint32_t )( self -> sample_rate / MICROPY_FLOAT_CONST ( 1000.0 ) * f_delay_ms ) * (self -> channel_count * sizeof (uint16_t ));
137137
138138 // Check if our new echo is too long for our maximum buffer
139139 if (new_echo_buffer_len > self -> max_echo_buffer_len ) {
@@ -153,7 +153,7 @@ void recalculate_delay(audiodelays_echo_obj_t *self, mp_float_t f_delay_ms) {
153153 memset (self -> echo_buffer + self -> echo_buffer_len , 0 , self -> max_echo_buffer_len - self -> echo_buffer_len );
154154 }
155155
156- self -> current_delay_ms = f_delay_ms ;
156+ self -> current_delay_ms = ( uint32_t ) f_delay_ms ;
157157}
158158
159159mp_obj_t common_hal_audiodelays_echo_get_decay (audiodelays_echo_obj_t * self ) {
@@ -360,17 +360,17 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
360360 echo = echo_buffer [echo_buffer_pos >> 8 ];
361361 next_buffer_pos = echo_buffer_pos + self -> echo_buffer_rate ;
362362
363- word = echo * decay ;
363+ word = ( int16_t )( echo * decay ) ;
364364 for (uint32_t j = echo_buffer_pos >> 8 ; j < next_buffer_pos >> 8 ; j ++ ) {
365365 echo_buffer [j % echo_buf_len ] = word ;
366366 }
367367 } else {
368368 echo = echo_buffer [self -> echo_buffer_read_pos ++ ];
369- word = echo * decay ;
369+ word = ( int16_t )( echo * decay ) ;
370370 echo_buffer [self -> echo_buffer_write_pos ++ ] = word ;
371371 }
372372
373- word = echo * mix ;
373+ word = ( int16_t )( echo * mix ) ;
374374
375375 if (MP_LIKELY (self -> bits_per_sample == 16 )) {
376376 word_buffer [i ] = word ;
@@ -433,10 +433,10 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
433433 if (self -> freq_shift ) {
434434 echo = echo_buffer [echo_buffer_pos >> 8 ];
435435 next_buffer_pos = echo_buffer_pos + self -> echo_buffer_rate ;
436- word = echo * decay + sample_word ;
436+ word = ( int32_t )( echo * decay + sample_word ) ;
437437 } else {
438438 echo = echo_buffer [self -> echo_buffer_read_pos ++ ];
439- word = echo * decay + sample_word ;
439+ word = ( int32_t )( echo * decay + sample_word ) ;
440440 }
441441
442442 if (MP_LIKELY (self -> bits_per_sample == 16 )) {
@@ -467,12 +467,12 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
467467 word = echo + sample_word ;
468468
469469 if (MP_LIKELY (self -> bits_per_sample == 16 )) {
470- word_buffer [i ] = (sample_word * (1.0 - mix )) + (word * mix );
470+ word_buffer [i ] = (int16_t )(( sample_word * (1.0 - mix )) + (word * mix ) );
471471 if (!self -> samples_signed ) {
472472 word_buffer [i ] ^= 0x8000 ;
473473 }
474474 } else {
475- int8_t mixed = (sample_word * (1.0 - mix )) + (word * mix );
475+ int8_t mixed = (int16_t )(( sample_word * (1.0 - mix )) + (word * mix ) );
476476 if (self -> samples_signed ) {
477477 hword_buffer [i ] = mixed ;
478478 } else {
0 commit comments