Skip to content

Commit 48e1327

Browse files
committed
Fix about incorrectly recalculating delay
1 parent 0fa3cd8 commit 48e1327

File tree

1 file changed

+6
-1
lines changed
  • shared-module/audiodelays

1 file changed

+6
-1
lines changed

shared-module/audiodelays/Echo.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ void common_hal_audiodelays_echo_set_delay_ms(audiodelays_echo_obj_t *self, mp_o
125125
void recalculate_delay(audiodelays_echo_obj_t *self, mp_float_t f_delay_ms) {
126126
// Calculate the current echo buffer length in bytes
127127

128-
uint32_t new_echo_buffer_len = self->sample_rate / 1000.0f * f_delay_ms * sizeof(uint16_t);
128+
uint32_t new_echo_buffer_len = self->sample_rate / 1000.0f * f_delay_ms * (self->channel_count * sizeof(uint16_t));
129129

130130
// Check if our new echo is too long for our maximum buffer
131131
if (new_echo_buffer_len > self->max_echo_buffer_len) {
@@ -134,6 +134,11 @@ void recalculate_delay(audiodelays_echo_obj_t *self, mp_float_t f_delay_ms) {
134134
return;
135135
}
136136

137+
// If the echo buffer is larger then our audio buffer weird things happen
138+
if (new_echo_buffer_len < self->buffer_len) {
139+
return;
140+
}
141+
137142
self->echo_buffer_len = new_echo_buffer_len;
138143
self->current_delay_ms = f_delay_ms;
139144
}

0 commit comments

Comments
 (0)