diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c index d920c93ca3..2cfb80f76a 100644 --- a/apps/menus/eq_menu.c +++ b/apps/menus/eq_menu.c @@ -70,12 +70,13 @@ const char* eq_precut_format(char* buffer, size_t buffer_size, int value, const */ static void eq_apply(void) { - int i; dsp_set_eq(global_settings.eq_enabled); dsp_set_eq_precut(global_settings.eq_precut); /* Update all bands */ - for(i = 0; i < 5; i++) { - dsp_set_eq_coefs(i); + for(int i = 0; i < 5; i++) { + dsp_set_eq_coefs(i, global_settings.eq_band_settings[i].cutoff, + global_settings.eq_band_settings[i].q, + global_settings.eq_band_settings[i].gain); } } @@ -578,7 +579,10 @@ bool eq_menu_graphical(void) /* Update the filter if the user changed something */ if (has_changed) { - dsp_set_eq_coefs(current_band); + dsp_set_eq_coefs(current_band, + global_settings.eq_band_settings[current_band].cutoff, + global_settings.eq_band_settings[current_band].q, + global_settings.eq_band_settings[current_band].gain); has_changed = false; } } diff --git a/apps/settings.c b/apps/settings.c index a267f51765..acc38c2388 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -988,8 +988,11 @@ void settings_apply(bool read_disk) /* Configure software equalizer, hardware eq is handled in audio_init() */ dsp_set_eq(global_settings.eq_enabled); dsp_set_eq_precut(global_settings.eq_precut); + for(int i = 0; i < 5; i++) { - dsp_set_eq_coefs(i); + dsp_set_eq_coefs(i, global_settings.eq_band_settings[i].cutoff, + global_settings.eq_band_settings[i].q, + global_settings.eq_band_settings[i].gain); } dsp_dither_enable(global_settings.dithering_enabled); diff --git a/lib/rbcodec/dsp/dsp.c b/lib/rbcodec/dsp/dsp.c index 4061fa7186..de647dc0dd 100644 --- a/lib/rbcodec/dsp/dsp.c +++ b/lib/rbcodec/dsp/dsp.c @@ -951,15 +951,10 @@ void dsp_set_eq_precut(int precut) * * @param band the equalizer band to synchronize */ -void dsp_set_eq_coefs(int band) +void dsp_set_eq_coefs(int band, int cutoff, int q, int gain) { - /* Adjust setting pointer to the band we actually want to change */ - struct eq_band_setting *setting = &global_settings.eq_band_settings[band]; - /* Convert user settings to format required by coef generator functions */ - unsigned long cutoff = 0xffffffff / NATIVE_FREQUENCY * setting->cutoff; - unsigned long q = setting->q; - int gain = setting->gain; + cutoff = 0xffffffff / NATIVE_FREQUENCY * cutoff; if (q == 0) q = 1; diff --git a/lib/rbcodec/dsp/dsp.h b/lib/rbcodec/dsp/dsp.h index 0da62747a3..a99df17468 100644 --- a/lib/rbcodec/dsp/dsp.h +++ b/lib/rbcodec/dsp/dsp.h @@ -111,7 +111,7 @@ void dsp_set_crossfeed_cross_params(long lf_gain, long hf_gain, long cutoff); void dsp_set_eq(bool enable); void dsp_set_eq_precut(int precut); -void dsp_set_eq_coefs(int band); +void dsp_set_eq_coefs(int band, int cutoff, int q, int gain); void dsp_dither_enable(bool enable); void dsp_timestretch_enable(bool enable); bool dsp_timestretch_available(void);