@@ -351,8 +351,8 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
351
351
echo = echo_buffer [echo_buffer_pos >> 8 ];
352
352
next_buffer_pos = echo_buffer_pos + self -> echo_buffer_rate ;
353
353
354
- word = (int16_t )(echo * decay );
355
354
for (uint32_t j = echo_buffer_pos >> 8 ; j < next_buffer_pos >> 8 ; j ++ ) {
355
+ word = (int16_t )(echo_buffer [j % echo_buf_len ] * decay );
356
356
echo_buffer [j % echo_buf_len ] = word ;
357
357
}
358
358
} else {
@@ -421,33 +421,33 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
421
421
if (self -> freq_shift ) {
422
422
echo = echo_buffer [echo_buffer_pos >> 8 ];
423
423
next_buffer_pos = echo_buffer_pos + self -> echo_buffer_rate ;
424
- word = (int32_t )(echo * decay + sample_word );
425
424
} else {
426
425
echo = echo_buffer [self -> echo_buffer_read_pos ++ ];
427
426
word = (int32_t )(echo * decay + sample_word );
428
427
}
429
428
430
429
if (MP_LIKELY (self -> bits_per_sample == 16 )) {
431
- word = synthio_mix_down_sample (word , SYNTHIO_MIX_DOWN_SCALE (2 ));
432
430
if (self -> freq_shift ) {
433
431
for (uint32_t j = echo_buffer_pos >> 8 ; j < next_buffer_pos >> 8 ; j ++ ) {
432
+ word = (int32_t )(echo_buffer [j % echo_buf_len ] * decay + sample_word );
433
+ word = synthio_mix_down_sample (word , SYNTHIO_MIX_DOWN_SCALE (2 ));
434
434
echo_buffer [j % echo_buf_len ] = (int16_t )word ;
435
435
}
436
436
} else {
437
+ word = synthio_mix_down_sample (word , SYNTHIO_MIX_DOWN_SCALE (2 ));
437
438
echo_buffer [self -> echo_buffer_write_pos ++ ] = (int16_t )word ;
438
439
}
439
440
} else {
440
- // Do not have mix_down for 8 bit so just hard cap samples into 1 byte
441
- if (word > 127 ) {
442
- word = 127 ;
443
- } else if (word < -128 ) {
444
- word = -128 ;
445
- }
446
441
if (self -> freq_shift ) {
447
442
for (uint32_t j = echo_buffer_pos >> 8 ; j < next_buffer_pos >> 8 ; j ++ ) {
443
+ word = (int32_t )(echo_buffer [j % echo_buf_len ] * decay + sample_word );
444
+ // Do not have mix_down for 8 bit so just hard cap samples into 1 byte
445
+ word = MIN (MAX (word , -128 ), 127 );
448
446
echo_buffer [j % echo_buf_len ] = (int8_t )word ;
449
447
}
450
448
} else {
449
+ // Do not have mix_down for 8 bit so just hard cap samples into 1 byte
450
+ word = MIN (MAX (word , -128 ), 127 );
451
451
echo_buffer [self -> echo_buffer_write_pos ++ ] = (int8_t )word ;
452
452
}
453
453
}
0 commit comments