summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2013-02-05 23:20:17 +1100
committerJonathan Gordon <rockbox@jdgordon.info>2013-02-09 13:05:32 +0100
commit1eb17dc9f4bf280d2e9503f3d0c8b8730146412d (patch)
treed166a646c42a484edd2ad66e021c4473c4001a91
parentcb3e40be0a09de1b927fcaab75118dad54c9e563 (diff)
downloadrockbox-1eb17dc9f4bf280d2e9503f3d0c8b8730146412d.tar.gz
rockbox-1eb17dc9f4bf280d2e9503f3d0c8b8730146412d.zip
EQ settings: Rework the settings to clean up the config file.
Instead of 3 cfg lines per eq band there is now a single line for each: <config name>: <cutoff/center freq>, <q>, <gain> In addition, the config value names make a bit more sense. The old settings are still readable but config.cfg and any new settings files will be written with the new config values. (The old settings will be removed completly sometime after the next stable release). Also a slight rework of the advanced EQ menu UI Change-Id: I9008658d36ded442a5f2f825916df42a3934cbef Reviewed-on: http://gerrit.rockbox.org/394 Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
-rw-r--r--apps/menus/eq_menu.c552
-rw-r--r--apps/plugins/settings_dumper.c2
-rw-r--r--apps/settings.c2
-rw-r--r--apps/settings_list.c139
-rw-r--r--apps/settings_list.h6
-rw-r--r--lib/rbcodec/dsp/eq.h5
-rw-r--r--lib/rbcodec/dsp/eqs/Acoustic.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Bass.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Classical.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Club.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Dance.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Default.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Disco.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Electronic.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Flat.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Headphones.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Hip-Hop.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Jazz.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Live.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Lounge.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Party.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Pop.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/R&B.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Reggae.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Rock.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Ska.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Soft.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Techno.cfg40
-rw-r--r--lib/rbcodec/dsp/eqs/Vocal.cfg40
29 files changed, 661 insertions, 965 deletions
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index 2f3d6b62c7..8285850155 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -27,6 +27,7 @@
27#include "system.h" 27#include "system.h"
28#include "kernel.h" 28#include "kernel.h"
29#include "lcd.h" 29#include "lcd.h"
30#include "list.h"
30#include "menu.h" 31#include "menu.h"
31#include "action.h" 32#include "action.h"
32#include "mp3_playback.h" 33#include "mp3_playback.h"
@@ -46,6 +47,8 @@
46#include "menu_common.h" 47#include "menu_common.h"
47#include "viewport.h" 48#include "viewport.h"
48#include "exported_menus.h" 49#include "exported_menus.h"
50#include "pcmbuf.h"
51#include "option_select.h"
49 52
50/* 53/*
51 * Utility functions 54 * Utility functions
@@ -70,8 +73,8 @@ const char* eq_precut_format(char* buffer, size_t buffer_size, int value, const
70 */ 73 */
71static void eq_apply(void) 74static void eq_apply(void)
72{ 75{
73 dsp_eq_enable(global_settings.eq_enabled); 76 dsp_eq_enable(global_settings.eq_enabled);
74 dsp_set_eq_precut(global_settings.eq_precut); 77 dsp_set_eq_precut(global_settings.eq_precut);
75 /* Update all bands */ 78 /* Update all bands */
76 for(int i = 0; i < EQ_NUM_BANDS; i++) { 79 for(int i = 0; i < EQ_NUM_BANDS; i++) {
77 dsp_set_eq_coefs(i, &global_settings.eq_band_settings[i]); 80 dsp_set_eq_coefs(i, &global_settings.eq_band_settings[i]);
@@ -96,239 +99,315 @@ static int eq_setting_callback(int action, const struct menu_item_ex *this_item)
96MENUITEM_SETTING(eq_enable, &global_settings.eq_enabled, eq_setting_callback); 99MENUITEM_SETTING(eq_enable, &global_settings.eq_enabled, eq_setting_callback);
97MENUITEM_SETTING(eq_precut, &global_settings.eq_precut, eq_setting_callback); 100MENUITEM_SETTING(eq_precut, &global_settings.eq_precut, eq_setting_callback);
98 101
99MENUITEM_SETTING(cutoff_0, &global_settings.eq_band_settings[0].cutoff, 102static char* gainitem_get_name(int selected_item, void *data, char *buffer, size_t len)
100 eq_setting_callback);
101MENUITEM_SETTING(cutoff_1, &global_settings.eq_band_settings[1].cutoff,
102 eq_setting_callback);
103MENUITEM_SETTING(cutoff_2, &global_settings.eq_band_settings[2].cutoff,
104 eq_setting_callback);
105MENUITEM_SETTING(cutoff_3, &global_settings.eq_band_settings[3].cutoff,
106 eq_setting_callback);
107MENUITEM_SETTING(cutoff_4, &global_settings.eq_band_settings[4].cutoff,
108 eq_setting_callback);
109MENUITEM_SETTING(cutoff_5, &global_settings.eq_band_settings[5].cutoff,
110 eq_setting_callback);
111MENUITEM_SETTING(cutoff_6, &global_settings.eq_band_settings[6].cutoff,
112 eq_setting_callback);
113MENUITEM_SETTING(cutoff_7, &global_settings.eq_band_settings[7].cutoff,
114 eq_setting_callback);
115MENUITEM_SETTING(cutoff_8, &global_settings.eq_band_settings[8].cutoff,
116 eq_setting_callback);
117MENUITEM_SETTING(cutoff_9, &global_settings.eq_band_settings[9].cutoff,
118 eq_setting_callback);
119
120MENUITEM_SETTING(q_0, &global_settings.eq_band_settings[0].q,
121 eq_setting_callback);
122MENUITEM_SETTING(q_1, &global_settings.eq_band_settings[1].q,
123 eq_setting_callback);
124MENUITEM_SETTING(q_2, &global_settings.eq_band_settings[2].q,
125 eq_setting_callback);
126MENUITEM_SETTING(q_3, &global_settings.eq_band_settings[3].q,
127 eq_setting_callback);
128MENUITEM_SETTING(q_4, &global_settings.eq_band_settings[4].q,
129 eq_setting_callback);
130MENUITEM_SETTING(q_5, &global_settings.eq_band_settings[5].q,
131 eq_setting_callback);
132MENUITEM_SETTING(q_6, &global_settings.eq_band_settings[6].q,
133 eq_setting_callback);
134MENUITEM_SETTING(q_7, &global_settings.eq_band_settings[7].q,
135 eq_setting_callback);
136MENUITEM_SETTING(q_8, &global_settings.eq_band_settings[8].q,
137 eq_setting_callback);
138MENUITEM_SETTING(q_9, &global_settings.eq_band_settings[9].q,
139 eq_setting_callback);
140
141MENUITEM_SETTING(gain_0, &global_settings.eq_band_settings[0].gain,
142 eq_setting_callback);
143MENUITEM_SETTING(gain_1, &global_settings.eq_band_settings[1].gain,
144 eq_setting_callback);
145MENUITEM_SETTING(gain_2, &global_settings.eq_band_settings[2].gain,
146 eq_setting_callback);
147MENUITEM_SETTING(gain_3, &global_settings.eq_band_settings[3].gain,
148 eq_setting_callback);
149MENUITEM_SETTING(gain_4, &global_settings.eq_band_settings[4].gain,
150 eq_setting_callback);
151MENUITEM_SETTING(gain_5, &global_settings.eq_band_settings[5].gain,
152 eq_setting_callback);
153MENUITEM_SETTING(gain_6, &global_settings.eq_band_settings[6].gain,
154 eq_setting_callback);
155MENUITEM_SETTING(gain_7, &global_settings.eq_band_settings[7].gain,
156 eq_setting_callback);
157MENUITEM_SETTING(gain_8, &global_settings.eq_band_settings[8].gain,
158 eq_setting_callback);
159MENUITEM_SETTING(gain_9, &global_settings.eq_band_settings[9].gain,
160 eq_setting_callback);
161
162static char* gainitem_get_name(int selected_item, void * data, char *buffer)
163{ 103{
164 (void)selected_item; 104 (void)data;
165 int *setting = (int*)data; 105 snprintf(buffer, len, str(LANG_EQUALIZER_GAIN_ITEM),
166 snprintf(buffer, MAX_PATH, str(LANG_EQUALIZER_GAIN_ITEM), *setting); 106 global_settings.eq_band_settings[selected_item].cutoff);
107
167 return buffer; 108 return buffer;
168} 109}
169 110
170static int gainitem_speak_item(int selected_item, void * data) 111static int gainitem_speak_item(int selected_item, void *data)
171{ 112{
172 (void)selected_item; 113 (void)data;
173 int *setting = (int*)data; 114 talk_number(global_settings.eq_band_settings[selected_item].cutoff, false);
174 talk_number(*setting, false);
175 talk_id(LANG_EQUALIZER_GAIN_ITEM, true); 115 talk_id(LANG_EQUALIZER_GAIN_ITEM, true);
176 return 0; 116 return 0;
177} 117}
178 118
179static int do_option(void * param) 119static enum themable_icons gainitem_get_icon(int selected_item, void * data)
180{ 120{
181 const struct menu_item_ex *setting = (const struct menu_item_ex*)param; 121 (void)selected_item;
182 lowlatency_callback(ACTION_ENTER_MENUITEM, setting); 122 (void)data;
183 do_setting_from_menu(setting, NULL); 123
184 eq_apply(); 124 return Icon_Menu_functioncall;
185 lowlatency_callback(ACTION_EXIT_MENUITEM, setting);
186 return 0;
187} 125}
188 126
189MENUITEM_FUNCTION_DYNTEXT(gain_item_0, MENU_FUNC_USEPARAM, 127static const char* db_format(char* buffer, size_t buffer_size, int value,
190 do_option, (void*)&gain_0, 128 const char* unit)
191 gainitem_get_name, gainitem_speak_item, 129{
192 &global_settings.eq_band_settings[0].cutoff, 130 int v = abs(value);
193 NULL, Icon_NOICON); 131
194MENUITEM_FUNCTION_DYNTEXT(gain_item_1, MENU_FUNC_USEPARAM, 132 snprintf(buffer, buffer_size, "%s%d.%d %s", value < 0 ? "-" : "",
195 do_option, (void*)&gain_1, 133 v / 10, v % 10, unit);
196 gainitem_get_name, gainitem_speak_item, 134 return buffer;
197 &global_settings.eq_band_settings[1].cutoff, 135}
198 NULL, Icon_NOICON); 136
199MENUITEM_FUNCTION_DYNTEXT(gain_item_2, MENU_FUNC_USEPARAM, 137static int32_t get_dec_talkid(int value, int unit)
200 do_option, (void*)&gain_2, 138{
201 gainitem_get_name, gainitem_speak_item, 139 return TALK_ID_DECIMAL(value, 1, unit);
202 &global_settings.eq_band_settings[2].cutoff, 140}
203 NULL, Icon_NOICON); 141
204MENUITEM_FUNCTION_DYNTEXT(gain_item_3, MENU_FUNC_USEPARAM, 142static const struct int_setting gain_int_setting = {
205 do_option, (void*)&gain_3, 143 .option_callback = NULL,
206 gainitem_get_name, gainitem_speak_item, 144 .unit = UNIT_DB,
207 &global_settings.eq_band_settings[3].cutoff, 145 .min = EQ_GAIN_MIN,
208 NULL, Icon_NOICON); 146 .max = EQ_GAIN_MAX,
209MENUITEM_FUNCTION_DYNTEXT(gain_item_4, MENU_FUNC_USEPARAM, 147 .step = EQ_GAIN_STEP,
210 do_option, (void*)&gain_4, 148 .formatter = db_format,
211 gainitem_get_name, gainitem_speak_item, 149 .get_talk_id = get_dec_talkid,
212 &global_settings.eq_band_settings[4].cutoff, 150};
213 NULL, Icon_NOICON); 151
214MENUITEM_FUNCTION_DYNTEXT(gain_item_5, MENU_FUNC_USEPARAM, 152static const struct int_setting q_int_setting = {
215 do_option, (void*)&gain_5, 153 .option_callback = NULL,
216 gainitem_get_name, gainitem_speak_item, 154 .unit = UNIT_INT,
217 &global_settings.eq_band_settings[5].cutoff, 155 .min = EQ_Q_MIN,
218 NULL, Icon_NOICON); 156 .max = EQ_Q_MAX,
219MENUITEM_FUNCTION_DYNTEXT(gain_item_6, MENU_FUNC_USEPARAM, 157 .step = EQ_Q_STEP,
220 do_option, (void*)&gain_6, 158 .formatter = eq_q_format,
221 gainitem_get_name, gainitem_speak_item, 159 .get_talk_id = get_dec_talkid,
222 &global_settings.eq_band_settings[6].cutoff, 160};
223 NULL, Icon_NOICON); 161
224MENUITEM_FUNCTION_DYNTEXT(gain_item_7, MENU_FUNC_USEPARAM, 162static const struct int_setting cutoff_int_setting = {
225 do_option, (void*)&gain_7, 163 .option_callback = NULL,
226 gainitem_get_name, gainitem_speak_item, 164 .unit = UNIT_HERTZ,
227 &global_settings.eq_band_settings[7].cutoff, 165 .min = EQ_CUTOFF_MIN,
228 NULL, Icon_NOICON); 166 .max = EQ_CUTOFF_MAX,
229MENUITEM_FUNCTION_DYNTEXT(gain_item_8, MENU_FUNC_USEPARAM, 167 .step = EQ_CUTOFF_STEP,
230 do_option, (void*)&gain_8, 168 .formatter = NULL,
231 gainitem_get_name, gainitem_speak_item, 169 .get_talk_id = NULL,
232 &global_settings.eq_band_settings[8].cutoff,
233 NULL, Icon_NOICON);
234MENUITEM_FUNCTION_DYNTEXT(gain_item_9, MENU_FUNC_USEPARAM,
235 do_option, (void*)&gain_9,
236 gainitem_get_name, gainitem_speak_item,
237 &global_settings.eq_band_settings[9].cutoff,
238 NULL, Icon_NOICON);
239
240MAKE_MENU(gain_menu, ID2P(LANG_EQUALIZER_GAIN), NULL, Icon_NOICON, &gain_item_0,
241 &gain_item_1, &gain_item_2, &gain_item_3, &gain_item_4,
242 &gain_item_5, &gain_item_6, &gain_item_7, &gain_item_8,
243 &gain_item_9);
244
245static const struct menu_item_ex *band_items[8][3] = {
246 { &cutoff_1, &q_1, &gain_1 },
247 { &cutoff_2, &q_2, &gain_2 },
248 { &cutoff_3, &q_3, &gain_3 },
249 { &cutoff_4, &q_4, &gain_4 },
250 { &cutoff_5, &q_5, &gain_5 },
251 { &cutoff_6, &q_6, &gain_6 },
252 { &cutoff_7, &q_7, &gain_7 },
253 { &cutoff_8, &q_8, &gain_8 }
254}; 170};
255 171
256static char* centerband_get_name(int selected_item, void * data, char *buffer) 172static int simplelist_action_callback(int action, struct gui_synclist *lists)
257{ 173{
258 (void)selected_item; 174 (void)lists;
259 int band = (intptr_t)data; 175 if (action == ACTION_STD_OK)
260 snprintf(buffer, MAX_PATH, str(LANG_EQUALIZER_BAND_PEAK), band); 176 return ACTION_STD_CANCEL;
261 return buffer; 177 return action;
262} 178}
263 179
264static int centerband_speak_item(int selected_item, void * data) 180static int eq_do_simple_menu(void * param)
265{ 181{
266 (void)selected_item; 182 (void)param;
267 int band = (intptr_t)data; 183 struct simplelist_info info;
268 talk_id(LANG_EQUALIZER_BAND_PEAK, false); 184 struct settings_list setting;
269 talk_number(band, true); 185 char title[MAX_PATH];
186
187 simplelist_info_init(&info, str(LANG_EQUALIZER_GAIN), EQ_NUM_BANDS, NULL);
188 info.get_name = (list_get_name*)gainitem_get_name;
189 info.get_talk = gainitem_speak_item;
190 info.get_icon = gainitem_get_icon;
191 info.action_callback = simplelist_action_callback;
192 info.selection = -1;
193 info.title_icon = Icon_Submenu;
194 setting.flags = F_BANFROMQS|F_INT_SETTING|F_T_INT|F_NO_WRAP;
195 setting.lang_id = LANG_GAIN;
196 setting.default_val.int_ = 0;
197 setting.int_setting = &gain_int_setting;
198
199 while (true)
200 {
201 simplelist_show_list(&info);
202 if (info.selection < 0)
203 break;
204 pcmbuf_set_low_latency(true);
205 setting.setting = &global_settings.eq_band_settings[info.selection].gain;
206 option_screen(&setting, NULL, false,
207 gainitem_get_name(info.selection, NULL, title, MAX_PATH));
208 eq_apply();
209 pcmbuf_set_low_latency(false);
210 }
270 return 0; 211 return 0;
271} 212}
213MENUITEM_FUNCTION(gain_menu, 0, ID2P(LANG_EQUALIZER_GAIN), eq_do_simple_menu,
214 NULL, NULL, Icon_Submenu);
272 215
273static int do_center_band_menu(void* param) 216static void selection_to_banditem(int selection, int expanded_band, int *band, int *item)
274{ 217{
275 int band = (intptr_t)param; 218 int diff = selection - expanded_band;
276 struct menu_item_ex menu; 219
277 struct menu_callback_with_desc cb_and_desc; 220 if (expanded_band < 0 || diff < 0)
278 char desc[MAX_PATH]; 221 {
279 222 *item = 0;
280 cb_and_desc.menu_callback = NULL; 223 *band = selection;
281 snprintf(desc, MAX_PATH, str(LANG_EQUALIZER_BAND_PEAK), band); 224 }
282 cb_and_desc.desc = desc; 225 else if (diff < 4)
283 cb_and_desc.icon_id = Icon_EQ; 226 {
284 menu.flags = MT_MENU|(3<<MENU_COUNT_SHIFT)|MENU_HAS_DESC; 227 *item = selection - expanded_band;
285 menu.submenus = band_items[band-1]; 228 *band = expanded_band;
286 menu.callback_and_desc = &cb_and_desc; 229 }
287 do_menu(&menu, NULL, NULL, false); 230 else
288 return 0; 231 {
232 *item = 0;
233 *band = expanded_band + diff - 3;
234 }
289} 235}
290 236
291MAKE_MENU(band_0_menu, ID2P(LANG_EQUALIZER_BAND_LOW_SHELF), NULL, 237static char *advancedmenu_item_get_name(int selected_item, void *data, char *buffer, size_t len)
292 Icon_EQ, &cutoff_0, &q_0, &gain_0); 238{
293MENUITEM_FUNCTION_DYNTEXT(band_1_menu, MENU_FUNC_USEPARAM, 239 (void)len;
294 do_center_band_menu, (void*)1, 240 int band;
295 centerband_get_name, centerband_speak_item, 241 int item;
296 (void*)1, NULL, Icon_EQ); 242 char *lang = NULL;
297MENUITEM_FUNCTION_DYNTEXT(band_2_menu, MENU_FUNC_USEPARAM,
298 do_center_band_menu, (void*)2,
299 centerband_get_name, centerband_speak_item,
300 (void*)2, NULL, Icon_EQ);
301MENUITEM_FUNCTION_DYNTEXT(band_3_menu, MENU_FUNC_USEPARAM,
302 do_center_band_menu, (void*)3,
303 centerband_get_name, centerband_speak_item,
304 (void*)3, NULL, Icon_EQ);
305MENUITEM_FUNCTION_DYNTEXT(band_4_menu, MENU_FUNC_USEPARAM,
306 do_center_band_menu, (void*)4,
307 centerband_get_name, centerband_speak_item,
308 (void*)4, NULL, Icon_EQ);
309MENUITEM_FUNCTION_DYNTEXT(band_5_menu, MENU_FUNC_USEPARAM,
310 do_center_band_menu, (void*)5,
311 centerband_get_name, centerband_speak_item,
312 (void*)5, NULL, Icon_EQ);
313MENUITEM_FUNCTION_DYNTEXT(band_6_menu, MENU_FUNC_USEPARAM,
314 do_center_band_menu, (void*)6,
315 centerband_get_name, centerband_speak_item,
316 (void*)6, NULL, Icon_EQ);
317MENUITEM_FUNCTION_DYNTEXT(band_7_menu, MENU_FUNC_USEPARAM,
318 do_center_band_menu, (void*)7,
319 centerband_get_name, centerband_speak_item,
320 (void*)7, NULL, Icon_EQ);
321MENUITEM_FUNCTION_DYNTEXT(band_8_menu, MENU_FUNC_USEPARAM,
322 do_center_band_menu, (void*)8,
323 centerband_get_name, centerband_speak_item,
324 (void*)8, NULL, Icon_EQ);
325MAKE_MENU(band_9_menu, ID2P(LANG_EQUALIZER_BAND_HIGH_SHELF), NULL,
326 Icon_EQ, &cutoff_9, &q_9, &gain_9);
327
328MAKE_MENU(advanced_eq_menu_, ID2P(LANG_EQUALIZER_ADVANCED), NULL, Icon_EQ,
329 &band_0_menu, &band_1_menu, &band_2_menu, &band_3_menu, &band_4_menu,
330 &band_5_menu, &band_6_menu, &band_7_menu, &band_8_menu, &band_9_menu);
331 243
244 selection_to_banditem(selected_item, *(intptr_t*)data, &band, &item);
245
246 strcpy(buffer, "\t");
247 switch (item)
248 {
249 case 0: /* Band title */
250 if (band == 0)
251 return str(LANG_EQUALIZER_BAND_LOW_SHELF);
252 else if (band == EQ_NUM_BANDS - 1)
253 return str(LANG_EQUALIZER_BAND_HIGH_SHELF);
254 else
255 {
256 snprintf(buffer, MAX_PATH, str(LANG_EQUALIZER_BAND_PEAK), band);
257 return buffer;
258 }
259 break;
260 case 1: /* cutoff */
261 if (band == 0)
262 lang = str(LANG_EQUALIZER_BAND_CUTOFF);
263 else if (band == EQ_NUM_BANDS - 1)
264 lang = str(LANG_EQUALIZER_BAND_CUTOFF);
265 else
266 lang = str(LANG_EQUALIZER_BAND_CENTER);
267 break;
268 case 2: /* Q */
269 lang = str(LANG_EQUALIZER_BAND_Q);
270 break;
271 case 3: /* Gain */
272 lang = str(LANG_GAIN);
273 break;
274 }
275
276 return strcat(buffer, lang);;
277}
278
279static int advancedmenu_speak_item(int selected_item, void *data)
280{
281 (void)data;
282 int band;
283 int item;
284 int lang = -1;
285
286 selection_to_banditem(selected_item, *(intptr_t*)data, &band, &item);
287
288 switch (item)
289 {
290 case 0: /* Band title */
291 if (band == 0)
292 lang = LANG_EQUALIZER_BAND_LOW_SHELF;
293 else if (band == EQ_NUM_BANDS - 1)
294 lang = LANG_EQUALIZER_BAND_HIGH_SHELF;
295 else
296 {
297 talk_id(LANG_EQUALIZER_BAND_PEAK, false);
298 talk_number(band, true);
299 return -1;
300 }
301 break;
302 case 1: /* cutoff */
303 if (band == 0)
304 lang = LANG_EQUALIZER_BAND_CUTOFF;
305 else if (band == EQ_NUM_BANDS - 1)
306 lang = LANG_EQUALIZER_BAND_CUTOFF;
307 else
308 lang = LANG_EQUALIZER_BAND_CENTER;
309 break;
310 case 2: /* Q */
311 lang = LANG_EQUALIZER_BAND_Q;
312 break;
313 case 3: /* Gain */
314 lang = LANG_GAIN;
315 break;
316 }
317 talk_id(lang, true);
318 return -1;
319}
320
321static enum themable_icons advancedmenu_get_icon(int selected_item, void * data)
322{
323 (void)data;
324 int band;
325 int item;
326
327 selection_to_banditem(selected_item, *(intptr_t*)data, &band, &item);
328
329 if (item == 0)
330 return Icon_Submenu;
331 else
332 return Icon_Menu_setting;
333}
334extern struct eq_band_setting eq_defaults[EQ_NUM_BANDS];
335
336static int eq_do_advanced_menu(void * param)
337{
338 (void)param;
339 struct simplelist_info info;
340 struct settings_list setting;
341 char title[MAX_PATH];
342 int band, item;
343 intptr_t selected_band = -1;
344
345 simplelist_info_init(&info, str(LANG_EQUALIZER_ADVANCED),
346 EQ_NUM_BANDS, &selected_band);
347 info.get_name = (list_get_name*)advancedmenu_item_get_name;
348 info.get_talk = advancedmenu_speak_item;
349 info.get_icon = advancedmenu_get_icon;
350 info.action_callback = simplelist_action_callback;
351 info.selection = -1;
352 info.title_icon = Icon_EQ;
353 setting.flags = F_BANFROMQS|F_INT_SETTING|F_T_INT|F_NO_WRAP;
354
355 while (true)
356 {
357 simplelist_show_list(&info);
358 if (info.selection < 0)
359 break;
360 selection_to_banditem(info.selection, selected_band, &band, &item);
361 switch (item)
362 {
363 case 0: /* title, do nothing */
364 {
365 int extra;
366 if (selected_band == band)
367 {
368 extra = 0;
369 selected_band = -1;
370 }
371 else
372 {
373 extra = 3;
374 selected_band = band;
375 }
376 info.selection = band;
377 info.count = EQ_NUM_BANDS + extra;
378 continue;
379 }
380 case 1: /* cutoff */
381 if (band == 0 || band == EQ_NUM_BANDS - 1)
382 setting.lang_id = LANG_EQUALIZER_BAND_CUTOFF;
383 else
384 setting.lang_id = LANG_EQUALIZER_BAND_CENTER;
385 setting.default_val.int_ = eq_defaults[band].cutoff;
386 setting.int_setting = &cutoff_int_setting;
387 break;
388 case 2: /* Q */
389 setting.lang_id = LANG_EQUALIZER_BAND_Q;
390 setting.default_val.int_ = eq_defaults[band].q;
391 setting.int_setting = &q_int_setting;
392 break;
393 case 3: /* Gain */
394 setting.lang_id = LANG_GAIN;
395 setting.default_val.int_ = eq_defaults[band].gain;
396 setting.int_setting = &gain_int_setting;
397 break;
398 }
399 pcmbuf_set_low_latency(true);
400 setting.setting = &global_settings.eq_band_settings[band].gain;
401 advancedmenu_item_get_name(info.selection, &selected_band, title, MAX_PATH);
402
403 option_screen(&setting, NULL, false, title[0] == '\t' ? &title[1] : title);
404 eq_apply();
405 pcmbuf_set_low_latency(false);
406 }
407 return 0;
408}
409MENUITEM_FUNCTION(advanced_menu, 0, ID2P(LANG_EQUALIZER_ADVANCED),
410 eq_do_advanced_menu, NULL, NULL, Icon_EQ);
332 411
333enum eq_slider_mode { 412enum eq_slider_mode {
334 GAIN, 413 GAIN,
@@ -361,12 +440,12 @@ static int draw_eq_slider(struct screen * screen, int x, int y,
361 steps = EQ_Q_MAX - EQ_Q_MIN; 440 steps = EQ_Q_MAX - EQ_Q_MIN;
362 min_item = q - EQ_Q_STEP - EQ_Q_MIN; 441 min_item = q - EQ_Q_STEP - EQ_Q_MIN;
363 max_item = q + EQ_Q_STEP - EQ_Q_MIN; 442 max_item = q + EQ_Q_STEP - EQ_Q_MIN;
364 break; 443 break;
365 case CUTOFF: 444 case CUTOFF:
366 steps = EQ_CUTOFF_MAX - EQ_CUTOFF_MIN; 445 steps = EQ_CUTOFF_MAX - EQ_CUTOFF_MIN;
367 min_item = cutoff - EQ_CUTOFF_FAST_STEP * 2; 446 min_item = cutoff - EQ_CUTOFF_FAST_STEP * 2;
368 max_item = cutoff + EQ_CUTOFF_FAST_STEP * 2; 447 max_item = cutoff + EQ_CUTOFF_FAST_STEP * 2;
369 break; 448 break;
370 case GAIN: 449 case GAIN:
371 default: 450 default:
372 steps = EQ_GAIN_MAX - EQ_GAIN_MIN; 451 steps = EQ_GAIN_MAX - EQ_GAIN_MIN;
@@ -383,7 +462,7 @@ static int draw_eq_slider(struct screen * screen, int x, int y,
383 if (band == 0) { 462 if (band == 0) {
384 screen->putsxy(x1, y1, "LS: "); 463 screen->putsxy(x1, y1, "LS: ");
385 screen->getstringsize("LS:", &w, &h); 464 screen->getstringsize("LS:", &w, &h);
386 } else if (band == 9) { 465 } else if (band == EQ_NUM_BANDS - 1) {
387 screen->putsxy(x1, y1, "HS: "); 466 screen->putsxy(x1, y1, "HS: ");
388 screen->getstringsize("HS:", &w, &h); 467 screen->getstringsize("HS:", &w, &h);
389 } else { 468 } else {
@@ -425,7 +504,7 @@ static int draw_eq_slider(struct screen * screen, int x, int y,
425 screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); 504 screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID);
426 else 505 else
427 screen->set_drawmode(DRMODE_SOLID); 506 screen->set_drawmode(DRMODE_SOLID);
428 507
429 snprintf(buf, sizeof(buf), "%5d%s", cutoff, 508 snprintf(buf, sizeof(buf), "%5d%s", cutoff,
430 screen->lcdwidth >= 160 ? "Hz" : ""); 509 screen->lcdwidth >= 160 ? "Hz" : "");
431 screen->getstringsize(buf, &w, &h); 510 screen->getstringsize(buf, &w, &h);
@@ -453,9 +532,9 @@ static void draw_eq_sliders(struct screen * screen, int x, int y,
453{ 532{
454 int height = y; 533 int height = y;
455 534
456 start_item = MIN(start_item, 10 - nb_eq_sliders); 535 start_item = MIN(start_item, EQ_NUM_BANDS - nb_eq_sliders);
457 536
458 for (int i = 0; i < 10; i++) { 537 for (int i = 0; i < EQ_NUM_BANDS; i++) {
459 struct eq_band_setting *setting = &global_settings.eq_band_settings[i]; 538 struct eq_band_setting *setting = &global_settings.eq_band_settings[i];
460 int cutoff = setting->cutoff; 539 int cutoff = setting->cutoff;
461 int q = setting->q; 540 int q = setting->q;
@@ -473,9 +552,9 @@ static void draw_eq_sliders(struct screen * screen, int x, int y,
473 } 552 }
474 } 553 }
475 554
476 if (nb_eq_sliders != 10) 555 if (nb_eq_sliders != EQ_NUM_BANDS)
477 gui_scrollbar_draw(screen, 0, y, SCROLLBAR_SIZE - 1, 556 gui_scrollbar_draw(screen, 0, y, SCROLLBAR_SIZE - 1,
478 screen->lcdheight - y, 10, 557 screen->lcdheight - y, EQ_NUM_BANDS,
479 start_item, start_item + nb_eq_sliders, 558 start_item, start_item + nb_eq_sliders,
480 VERTICAL); 559 VERTICAL);
481 return; 560 return;
@@ -514,16 +593,16 @@ bool eq_menu_graphical(void)
514 if (height > screens[i].lcdheight) 593 if (height > screens[i].lcdheight)
515 nb_eq_sliders[i]--; 594 nb_eq_sliders[i]--;
516 595
517 if (nb_eq_sliders[i] > 10) 596 if (nb_eq_sliders[i] > EQ_NUM_BANDS)
518 nb_eq_sliders[i] = 10; 597 nb_eq_sliders[i] = EQ_NUM_BANDS;
519 } 598 }
520 599
521 y = h + 1; 600 y = h + 1;
522 601
523 /* Start off editing gain on the first band */ 602 /* Start off editing gain on the first band */
524 mode = GAIN; 603 mode = GAIN;
525 current_band = 0; 604 current_band = 0;
526 605
527 while (!exit_request) { 606 while (!exit_request) {
528 FOR_NB_SCREENS(i) 607 FOR_NB_SCREENS(i)
529 { 608 {
@@ -538,7 +617,7 @@ bool eq_menu_graphical(void)
538 fast_step = EQ_GAIN_FAST_STEP; 617 fast_step = EQ_GAIN_FAST_STEP;
539 min = EQ_GAIN_MIN; 618 min = EQ_GAIN_MIN;
540 max = EQ_GAIN_MAX; 619 max = EQ_GAIN_MAX;
541 620
542 snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), 621 snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE),
543 str(LANG_SYSFONT_GAIN), "(dB)"); 622 str(LANG_SYSFONT_GAIN), "(dB)");
544 623
@@ -572,12 +651,12 @@ bool eq_menu_graphical(void)
572 } 651 }
573 652
574 /* Draw scrollbar if needed */ 653 /* Draw scrollbar if needed */
575 if (nb_eq_sliders[i] != 10) 654 if (nb_eq_sliders[i] != EQ_NUM_BANDS)
576 { 655 {
577 if (current_band == 0) { 656 if (current_band == 0) {
578 start_item = 0; 657 start_item = 0;
579 } else if (current_band == 9) { 658 } else if (current_band == 9) {
580 start_item = 10 - nb_eq_sliders[i]; 659 start_item = EQ_NUM_BANDS - nb_eq_sliders[i];
581 } else { 660 } else {
582 start_item = current_band - 1; 661 start_item = current_band - 1;
583 } 662 }
@@ -592,7 +671,7 @@ bool eq_menu_graphical(void)
592 671
593 screens[i].update(); 672 screens[i].update();
594 } 673 }
595 674
596 button = get_action(CONTEXT_SETTINGS_EQ,TIMEOUT_BLOCK); 675 button = get_action(CONTEXT_SETTINGS_EQ,TIMEOUT_BLOCK);
597 676
598 switch (button) { 677 switch (button) {
@@ -630,14 +709,12 @@ bool eq_menu_graphical(void)
630 case ACTION_STD_PREVREPEAT: 709 case ACTION_STD_PREVREPEAT:
631 current_band--; 710 current_band--;
632 if (current_band < 0) 711 if (current_band < 0)
633 current_band = 9; /* wrap around */ 712 current_band = EQ_NUM_BANDS - 1; /* wrap around */
634 break; 713 break;
635 714
636 case ACTION_STD_NEXT: 715 case ACTION_STD_NEXT:
637 case ACTION_STD_NEXTREPEAT: 716 case ACTION_STD_NEXTREPEAT:
638 current_band++; 717 current_band = (current_band + 1) % EQ_NUM_BANDS;
639 if (current_band > 9)
640 current_band = 0; /* wrap around */
641 break; 718 break;
642 719
643 case ACTION_STD_OK: 720 case ACTION_STD_OK:
@@ -657,7 +734,7 @@ bool eq_menu_graphical(void)
657 } 734 }
658 break; 735 break;
659 } 736 }
660 737
661 /* Update the filter if the user changed something */ 738 /* Update the filter if the user changed something */
662 if (has_changed) { 739 if (has_changed) {
663 dsp_set_eq_coefs(current_band, 740 dsp_set_eq_coefs(current_band,
@@ -667,7 +744,7 @@ bool eq_menu_graphical(void)
667 } 744 }
668 745
669 /* Reset screen settings */ 746 /* Reset screen settings */
670 FOR_NB_SCREENS(i) 747 FOR_NB_SCREENS(i)
671 { 748 {
672 screens[i].setfont(FONT_UI); 749 screens[i].setfont(FONT_UI);
673 screens[i].clear_display(); 750 screens[i].clear_display();
@@ -682,19 +759,18 @@ static bool eq_save_preset(void)
682 /* make sure that the eq is enabled for setting saving */ 759 /* make sure that the eq is enabled for setting saving */
683 bool enabled = global_settings.eq_enabled; 760 bool enabled = global_settings.eq_enabled;
684 global_settings.eq_enabled = true; 761 global_settings.eq_enabled = true;
685 762
686 bool result = settings_save_config(SETTINGS_SAVE_EQPRESET); 763 bool result = settings_save_config(SETTINGS_SAVE_EQPRESET);
687 764
688 global_settings.eq_enabled = enabled; 765 global_settings.eq_enabled = enabled;
689 766
690 return result; 767 return result;
691} 768}
692
693/* Allows browsing of preset files */ 769/* Allows browsing of preset files */
694static struct browse_folder_info eqs = { EQS_DIR, SHOW_CFG }; 770static struct browse_folder_info eqs = { EQS_DIR, SHOW_CFG };
695 771
696MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL), 772MENUITEM_FUNCTION(eq_graphical, 0, ID2P(LANG_EQUALIZER_GRAPHICAL),
697 (int(*)(void))eq_menu_graphical, NULL, lowlatency_callback, 773 (int(*)(void))eq_menu_graphical, NULL, lowlatency_callback,
698 Icon_EQ); 774 Icon_EQ);
699MENUITEM_FUNCTION(eq_save, 0, ID2P(LANG_EQUALIZER_SAVE), 775MENUITEM_FUNCTION(eq_save, 0, ID2P(LANG_EQUALIZER_SAVE),
700 (int(*)(void))eq_save_preset, NULL, NULL, Icon_NOICON); 776 (int(*)(void))eq_save_preset, NULL, NULL, Icon_NOICON);
@@ -703,6 +779,6 @@ MENUITEM_FUNCTION(eq_browse, MENU_FUNC_USEPARAM, ID2P(LANG_EQUALIZER_BROWSE),
703 Icon_NOICON); 779 Icon_NOICON);
704 780
705MAKE_MENU(equalizer_menu, ID2P(LANG_EQUALIZER), NULL, Icon_EQ, 781MAKE_MENU(equalizer_menu, ID2P(LANG_EQUALIZER), NULL, Icon_EQ,
706 &eq_enable, &eq_graphical, &eq_precut, &gain_menu, 782 &eq_enable, &eq_graphical, &eq_precut, &gain_menu,
707 &advanced_eq_menu_, &eq_save, &eq_browse); 783 &advanced_menu, &eq_save, &eq_browse);
708 784
diff --git a/apps/plugins/settings_dumper.c b/apps/plugins/settings_dumper.c
index 381cdeebaa..66bfa65b0f 100644
--- a/apps/plugins/settings_dumper.c
+++ b/apps/plugins/settings_dumper.c
@@ -37,6 +37,8 @@ static void write_setting(const struct settings_list *setting, int fd, unsigned
37 F_EQSETTING| 37 F_EQSETTING|
38 F_SOUNDSETTING))) 38 F_SOUNDSETTING)))
39 return; 39 return;
40 else if (setting->flags&F_DEPRECATED)
41 return;
40 setting_count++; 42 setting_count++;
41 if (setting_count%10 == 0) 43 if (setting_count%10 == 0)
42 rb->fdprintf(fd, "\r\n"); 44 rb->fdprintf(fd, "\r\n");
diff --git a/apps/settings.c b/apps/settings.c
index e2a6efa3d8..1bb6c74b43 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -547,6 +547,8 @@ static bool settings_write_config(const char* filename, int options)
547 if (settings[i].cfg_name == NULL) 547 if (settings[i].cfg_name == NULL)
548 continue; 548 continue;
549 value[0] = '\0'; 549 value[0] = '\0';
550 if (settings[i].flags & F_DEPRECATED)
551 continue;
550 552
551 switch (options) 553 switch (options)
552 { 554 {
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 2b27516d1c..cc4012ec14 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -470,6 +470,66 @@ static int32_t get_precut_talkid(int value, int unit)
470 return TALK_ID_DECIMAL(-value, 1, unit); 470 return TALK_ID_DECIMAL(-value, 1, unit);
471} 471}
472 472
473struct eq_band_setting eq_defaults[EQ_NUM_BANDS] = {
474 { 32, 7, 0 },
475 { 64, 10, 0 },
476 { 125, 10, 0 },
477 { 250, 10, 0 },
478 { 500, 10, 0 },
479 { 1000, 10, 0 },
480 { 2000, 10, 0 },
481 { 4000, 10, 0 },
482 { 8000, 10, 0 },
483 { 16000, 7, 0 },
484};
485
486static void eq_load_from_cfg(void *setting, char *value)
487{
488 struct eq_band_setting *eq = setting;
489 char *val_end, *end;
490
491 val_end = value + strlen(value);
492
493 /* cutoff/center */
494 end = strchr(value, ',');
495 if (!end) return;
496 *end = '\0';
497 eq->cutoff = atoi(value);
498
499 /* q */
500 value = end + 1;
501 if (value > val_end) return;
502 end = strchr(value, ',');
503 if (!end) return;
504 *end = '\0';
505 eq->q = atoi(value);
506
507 /* gain */
508 value = end + 1;
509 if (value > val_end) return;
510 eq->gain = atoi(value);
511}
512
513static char* eq_write_to_cfg(void *setting, char *buf, int buf_len)
514{
515 struct eq_band_setting *eq = setting;
516
517 snprintf(buf, buf_len, "%d, %d, %d", eq->cutoff, eq->q, eq->gain);
518 return buf;
519}
520
521static bool eq_is_changed(void *setting, void *defaultval)
522{
523 struct eq_band_setting *eq = setting;
524
525 return memcmp(eq, defaultval, sizeof(struct eq_band_setting));
526}
527
528static void eq_set_default(void* setting, void* defaultval)
529{
530 memcpy(setting, defaultval, sizeof(struct eq_band_setting));
531}
532
473#endif 533#endif
474#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 534#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
475static void set_mdb_enable(bool value) 535static void set_mdb_enable(bool value)
@@ -1435,103 +1495,122 @@ const struct settings_list settings[] = {
1435 /* equalizer */ 1495 /* equalizer */
1436 OFFON_SETTING(F_EQSETTING, eq_enabled, LANG_EQUALIZER_ENABLED, false, 1496 OFFON_SETTING(F_EQSETTING, eq_enabled, LANG_EQUALIZER_ENABLED, false,
1437 "eq enabled", NULL), 1497 "eq enabled", NULL),
1498
1438 INT_SETTING_NOWRAP(F_EQSETTING, eq_precut, LANG_EQUALIZER_PRECUT, 0, 1499 INT_SETTING_NOWRAP(F_EQSETTING, eq_precut, LANG_EQUALIZER_PRECUT, 0,
1439 "eq precut", UNIT_DB, 0, 240, 5, eq_precut_format, 1500 "eq precut", UNIT_DB, 0, 240, 5, eq_precut_format,
1440 get_precut_talkid, dsp_set_eq_precut), 1501 get_precut_talkid, dsp_set_eq_precut),
1502
1441 /* 0..32768 Hz */ 1503 /* 0..32768 Hz */
1442 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[0].cutoff, LANG_EQUALIZER_BAND_CUTOFF, 1504 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[0].cutoff, LANG_EQUALIZER_BAND_CUTOFF,
1443 32, "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1505 32, "eq band 0 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1444 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1506 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1445 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[1].cutoff, LANG_EQUALIZER_BAND_CENTER, 1507 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[1].cutoff, LANG_EQUALIZER_BAND_CENTER,
1446 64, "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1508 64, "eq band 1 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1447 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1509 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1448 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[2].cutoff, LANG_EQUALIZER_BAND_CENTER, 1510 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[2].cutoff, LANG_EQUALIZER_BAND_CENTER,
1449 125, "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1511 125, "eq band 2 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1450 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1512 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1451 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[3].cutoff, LANG_EQUALIZER_BAND_CENTER, 1513 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[3].cutoff, LANG_EQUALIZER_BAND_CENTER,
1452 250, "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1514 250, "eq band 3 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1453 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1515 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1454 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[4].cutoff, LANG_EQUALIZER_BAND_CENTER, 1516 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[4].cutoff, LANG_EQUALIZER_BAND_CENTER,
1455 500, "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1517 500, "eq band 4 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1456 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1518 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1457 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[5].cutoff, LANG_EQUALIZER_BAND_CENTER, 1519 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[5].cutoff, LANG_EQUALIZER_BAND_CENTER,
1458 1000, "eq band 5 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1520 1000, "eq band 5 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1459 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1521 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1460 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[6].cutoff, LANG_EQUALIZER_BAND_CENTER, 1522 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[6].cutoff, LANG_EQUALIZER_BAND_CENTER,
1461 2000, "eq band 6 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1523 2000, "eq band 6 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1462 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1524 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1463 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[7].cutoff, LANG_EQUALIZER_BAND_CENTER, 1525 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[7].cutoff, LANG_EQUALIZER_BAND_CENTER,
1464 4000, "eq band 7 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1526 4000, "eq band 7 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1465 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1527 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1466 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[8].cutoff, LANG_EQUALIZER_BAND_CENTER, 1528 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[8].cutoff, LANG_EQUALIZER_BAND_CENTER,
1467 8000, "eq band 8 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1529 8000, "eq band 8 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1468 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1530 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1469 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[9].cutoff, LANG_EQUALIZER_BAND_CUTOFF, 1531 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[9].cutoff, LANG_EQUALIZER_BAND_CUTOFF,
1470 16000, "eq band 9 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN, 1532 16000, "eq band 9 cutoff", UNIT_HERTZ, EQ_CUTOFF_MIN,
1471 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL), 1533 EQ_CUTOFF_MAX, EQ_CUTOFF_STEP, NULL, NULL, NULL),
1472 /* 0..64 (or 0.0 to 6.4) */ 1534 /* 0..64 (or 0.0 to 6.4) */
1473 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[0].q, LANG_EQUALIZER_BAND_Q, 7, 1535 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[0].q, LANG_EQUALIZER_BAND_Q, 7,
1474 "eq band 0 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1536 "eq band 0 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1475 eq_q_format, get_dec_talkid, NULL), 1537 eq_q_format, get_dec_talkid, NULL),
1476 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[1].q, LANG_EQUALIZER_BAND_Q, 10, 1538 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[1].q, LANG_EQUALIZER_BAND_Q, 10,
1477 "eq band 1 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1539 "eq band 1 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1478 eq_q_format, get_dec_talkid, NULL), 1540 eq_q_format, get_dec_talkid, NULL),
1479 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[2].q, LANG_EQUALIZER_BAND_Q, 10, 1541 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[2].q, LANG_EQUALIZER_BAND_Q, 10,
1480 "eq band 2 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1542 "eq band 2 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1481 eq_q_format, get_dec_talkid, NULL), 1543 eq_q_format, get_dec_talkid, NULL),
1482 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[3].q, LANG_EQUALIZER_BAND_Q, 10, 1544 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[3].q, LANG_EQUALIZER_BAND_Q, 10,
1483 "eq band 3 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1545 "eq band 3 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1484 eq_q_format, get_dec_talkid, NULL), 1546 eq_q_format, get_dec_talkid, NULL),
1485 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[4].q, LANG_EQUALIZER_BAND_Q, 10, 1547 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[4].q, LANG_EQUALIZER_BAND_Q, 10,
1486 "eq band 4 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1548 "eq band 4 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1487 eq_q_format, get_dec_talkid, NULL), 1549 eq_q_format, get_dec_talkid, NULL),
1488 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[5].q, LANG_EQUALIZER_BAND_Q, 10, 1550 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[5].q, LANG_EQUALIZER_BAND_Q, 10,
1489 "eq band 5 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1551 "eq band 5 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1490 eq_q_format, get_dec_talkid, NULL), 1552 eq_q_format, get_dec_talkid, NULL),
1491 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[6].q, LANG_EQUALIZER_BAND_Q, 10, 1553 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[6].q, LANG_EQUALIZER_BAND_Q, 10,
1492 "eq band 6 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1554 "eq band 6 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1493 eq_q_format, get_dec_talkid, NULL), 1555 eq_q_format, get_dec_talkid, NULL),
1494 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[7].q, LANG_EQUALIZER_BAND_Q, 10, 1556 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[7].q, LANG_EQUALIZER_BAND_Q, 10,
1495 "eq band 7 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1557 "eq band 7 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1496 eq_q_format, get_dec_talkid, NULL), 1558 eq_q_format, get_dec_talkid, NULL),
1497 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[8].q, LANG_EQUALIZER_BAND_Q, 10, 1559 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[8].q, LANG_EQUALIZER_BAND_Q, 10,
1498 "eq band 8 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1560 "eq band 8 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1499 eq_q_format, get_dec_talkid, NULL), 1561 eq_q_format, get_dec_talkid, NULL),
1500 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[9].q, LANG_EQUALIZER_BAND_Q, 7, 1562 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[9].q, LANG_EQUALIZER_BAND_Q, 7,
1501 "eq band 9 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP, 1563 "eq band 9 q", UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
1502 eq_q_format, get_dec_talkid, NULL), 1564 eq_q_format, get_dec_talkid, NULL),
1503 /* -240..240 (or -24db to +24db) */ 1565 /* -240..240 (or -24db to +24db) */
1504 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[0].gain, LANG_GAIN, 0, 1566 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[0].gain, LANG_GAIN, 0,
1505 "eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1567 "eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1506 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1568 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1507 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[1].gain, LANG_GAIN, 0, 1569 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[1].gain, LANG_GAIN, 0,
1508 "eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1570 "eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1509 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1571 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1510 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[2].gain, LANG_GAIN, 0, 1572 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[2].gain, LANG_GAIN, 0,
1511 "eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1573 "eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1512 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1574 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1513 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[3].gain, LANG_GAIN, 0, 1575 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[3].gain, LANG_GAIN, 0,
1514 "eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1576 "eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1515 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1577 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1516 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[4].gain, LANG_GAIN, 0, 1578 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[4].gain, LANG_GAIN, 0,
1517 "eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1579 "eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1518 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1580 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1519 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[5].gain, LANG_GAIN, 0, 1581 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[5].gain, LANG_GAIN, 0,
1520 "eq band 5 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1582 "eq band 5 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1521 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1583 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1522 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[6].gain, LANG_GAIN, 0, 1584 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[6].gain, LANG_GAIN, 0,
1523 "eq band 6 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1585 "eq band 6 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1524 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1586 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1525 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[7].gain, LANG_GAIN, 0, 1587 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[7].gain, LANG_GAIN, 0,
1526 "eq band 7 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1588 "eq band 7 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1527 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1589 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1528 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[8].gain, LANG_GAIN, 0, 1590 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[8].gain, LANG_GAIN, 0,
1529 "eq band 8 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1591 "eq band 8 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1530 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1592 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1531 INT_SETTING_NOWRAP(F_EQSETTING, eq_band_settings[9].gain, LANG_GAIN, 0, 1593 INT_SETTING_NOWRAP(F_DEPRECATED|F_EQSETTING, eq_band_settings[9].gain, LANG_GAIN, 0,
1532 "eq band 9 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, 1594 "eq band 9 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
1533 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL), 1595 EQ_GAIN_STEP, db_format, get_dec_talkid, NULL),
1534 1596
1597#define EQ_BAND(id, string) \
1598 CUSTOM_SETTING(F_EQSETTING, eq_band_settings[id], -1, \
1599 &eq_defaults[id], string, \
1600 eq_load_from_cfg, eq_write_to_cfg, \
1601 eq_is_changed, eq_set_default)
1602 EQ_BAND(0, "eq low shelf filter"),
1603 EQ_BAND(1, "eq peak filter 1"),
1604 EQ_BAND(2, "eq peak filter 2"),
1605 EQ_BAND(3, "eq peak filter 3"),
1606 EQ_BAND(4, "eq peak filter 4"),
1607 EQ_BAND(5, "eq peak filter 5"),
1608 EQ_BAND(6, "eq peak filter 6"),
1609 EQ_BAND(7, "eq peak filter 7"),
1610 EQ_BAND(8, "eq peak filter 8"),
1611 EQ_BAND(9, "eq high shelf filter"),
1612#undef EQ_BAND
1613
1535 /* dithering */ 1614 /* dithering */
1536 OFFON_SETTING(F_SOUNDSETTING, dithering_enabled, LANG_DITHERING, false, 1615 OFFON_SETTING(F_SOUNDSETTING, dithering_enabled, LANG_DITHERING, false,
1537 "dithering enabled", dsp_dither_enable), 1616 "dithering enabled", dsp_dither_enable),
diff --git a/apps/settings_list.h b/apps/settings_list.h
index 5cefcf6dc2..66b20ca6ca 100644
--- a/apps/settings_list.h
+++ b/apps/settings_list.h
@@ -152,10 +152,10 @@ struct custom_setting {
152#define F_PADTITLE 0x800 /* pad the title with spaces to force it to scroll */ 152#define F_PADTITLE 0x800 /* pad the title with spaces to force it to scroll */
153#define F_NO_WRAP 0x1000 /* used if the list should not wrap */ 153#define F_NO_WRAP 0x1000 /* used if the list should not wrap */
154 154
155#define F_BANFROMQS 0x80000000 /* ban the setting from the quickscreen items */ 155#define F_BANFROMQS 0x80000000 /* ban the setting from the quickscreen items */
156 156#define F_DEPRECATED 0x40000000 /* DEPRECATED setting, don't write to .cfg */
157struct settings_list { 157struct settings_list {
158 uint32_t flags; /* B___ _SER TFFF NNN_ _ATW PTVC IFRB STTT */ 158 uint32_t flags; /* BD__ _SER TFFF NNN_ _ATW PTVC IFRB STTT */
159 void *setting; 159 void *setting;
160 int lang_id; /* -1 for none */ 160 int lang_id; /* -1 for none */
161 union storage_type default_val; 161 union storage_type default_val;
diff --git a/lib/rbcodec/dsp/eq.h b/lib/rbcodec/dsp/eq.h
index 9b670d748a..9bb5f91ca5 100644
--- a/lib/rbcodec/dsp/eq.h
+++ b/lib/rbcodec/dsp/eq.h
@@ -21,10 +21,7 @@
21#ifndef _EQ_H 21#ifndef _EQ_H
22#define _EQ_H 22#define _EQ_H
23 23
24/* => support from 3 to 32 bands, inclusive 24/* => support from 3 to 32 bands */
25 * Menus and screens must be updated to support changing this from 5
26 * without modifying other stuff (remove comment when this is no longer
27 * true :-) */
28#define EQ_NUM_BANDS 10 25#define EQ_NUM_BANDS 10
29 26
30struct eq_band_setting 27struct eq_band_setting
diff --git a/lib/rbcodec/dsp/eqs/Acoustic.cfg b/lib/rbcodec/dsp/eqs/Acoustic.cfg
index fd30094119..72dbc48ae3 100644
--- a/lib/rbcodec/dsp/eqs/Acoustic.cfg
+++ b/lib/rbcodec/dsp/eqs/Acoustic.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 45 2eq precut: 45
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 45
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 45
5eq band 0 gain: 45 5eq peak filter 2: 125, 10, 10
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 10
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 15
8eq band 1 gain: 45 8eq peak filter 5: 1000, 10, 15
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 30
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 30
11eq band 2 gain: 10 11eq peak filter 8: 8000, 10, 20
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 20
13eq band 3 q: 10
14eq band 3 gain: 10
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 15
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 15
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 30
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 30
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 20
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 20
diff --git a/lib/rbcodec/dsp/eqs/Bass.cfg b/lib/rbcodec/dsp/eqs/Bass.cfg
index 3f122f1343..162874ef94 100644
--- a/lib/rbcodec/dsp/eqs/Bass.cfg
+++ b/lib/rbcodec/dsp/eqs/Bass.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 50 2eq precut: 50
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 50
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 50
5eq band 0 gain: 50 5eq peak filter 2: 125, 10, 35
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 35
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 15
8eq band 1 gain: 50 8eq peak filter 5: 1000, 10, 15
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 5
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 5
11eq band 2 gain: 35 11eq peak filter 8: 8000, 10, -5
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, -5
13eq band 3 q: 10
14eq band 3 gain: 35
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 15
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 15
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 5
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 5
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: -5
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: -5
diff --git a/lib/rbcodec/dsp/eqs/Classical.cfg b/lib/rbcodec/dsp/eqs/Classical.cfg
index ba95adb4f8..956cb1ecd1 100644
--- a/lib/rbcodec/dsp/eqs/Classical.cfg
+++ b/lib/rbcodec/dsp/eqs/Classical.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 0 2eq precut: 0
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 0
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: 0 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 0
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, -70
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, -70
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, -70
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 0
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: -70
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: -70
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: -70
diff --git a/lib/rbcodec/dsp/eqs/Club.cfg b/lib/rbcodec/dsp/eqs/Club.cfg
index 5e20ca2fe7..f9c350298f 100644
--- a/lib/rbcodec/dsp/eqs/Club.cfg
+++ b/lib/rbcodec/dsp/eqs/Club.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 80 2eq precut: 80
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 0
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: 0 5eq peak filter 2: 125, 10, 80
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 55
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 55
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 55
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 30
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 0
11eq band 2 gain: 80 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: 55
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 55
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 55
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 30
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 0
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0
diff --git a/lib/rbcodec/dsp/eqs/Dance.cfg b/lib/rbcodec/dsp/eqs/Dance.cfg
index 6c262924f2..b387245aae 100644
--- a/lib/rbcodec/dsp/eqs/Dance.cfg
+++ b/lib/rbcodec/dsp/eqs/Dance.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 95 2eq precut: 95
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 95
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 70
5eq band 0 gain: 95 5eq peak filter 2: 125, 10, 25
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 70 8eq peak filter 5: 1000, 10, -55
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, -70
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, -70
11eq band 2 gain: 25 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: -55
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: -70
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: -70
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0
diff --git a/lib/rbcodec/dsp/eqs/Default.cfg b/lib/rbcodec/dsp/eqs/Default.cfg
index c6579c7513..baf3c59069 100644
--- a/lib/rbcodec/dsp/eqs/Default.cfg
+++ b/lib/rbcodec/dsp/eqs/Default.cfg
@@ -1,32 +1,12 @@
1eq enabled: off 1eq enabled: off
2eq precut: 0 2eq precut: 0
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 0
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: 0 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 0
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 0
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 0
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 0
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0
diff --git a/lib/rbcodec/dsp/eqs/Disco.cfg b/lib/rbcodec/dsp/eqs/Disco.cfg
index 12f4b36af5..c43a29e798 100644
--- a/lib/rbcodec/dsp/eqs/Disco.cfg
+++ b/lib/rbcodec/dsp/eqs/Disco.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 45 2eq precut: 45
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 30
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 30
5eq band 0 gain: 30 5eq peak filter 2: 125, 10, 10
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 10
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 45
8eq band 1 gain: 30 8eq peak filter 5: 1000, 10, 45
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 25
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 25
11eq band 2 gain: 10 11eq peak filter 8: 8000, 10, 10
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 10
13eq band 3 q: 10
14eq band 3 gain: 10
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 45
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 45
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 25
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 25
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 10
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 10
diff --git a/lib/rbcodec/dsp/eqs/Electronic.cfg b/lib/rbcodec/dsp/eqs/Electronic.cfg
index e710706607..545a2161de 100644
--- a/lib/rbcodec/dsp/eqs/Electronic.cfg
+++ b/lib/rbcodec/dsp/eqs/Electronic.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 55 2eq precut: 55
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 45
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 45
5eq band 0 gain: 45 5eq peak filter 2: 125, 10, 5
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 5
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 25
8eq band 1 gain: 45 8eq peak filter 5: 1000, 10, 25
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 15
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 15
11eq band 2 gain: 5 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 55
13eq band 3 q: 10
14eq band 3 gain: 5
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 25
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 25
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 15
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 15
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 55
diff --git a/lib/rbcodec/dsp/eqs/Flat.cfg b/lib/rbcodec/dsp/eqs/Flat.cfg
index 9e52cb86e6..7e2cc32bdd 100644
--- a/lib/rbcodec/dsp/eqs/Flat.cfg
+++ b/lib/rbcodec/dsp/eqs/Flat.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 0 2eq precut: 0
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 0
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: 0 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 0
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 0
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 0
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 0
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0
diff --git a/lib/rbcodec/dsp/eqs/Headphones.cfg b/lib/rbcodec/dsp/eqs/Headphones.cfg
index 0720a599d1..27d038cce6 100644
--- a/lib/rbcodec/dsp/eqs/Headphones.cfg
+++ b/lib/rbcodec/dsp/eqs/Headphones.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 145 2eq precut: 145
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 50
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 110
5eq band 0 gain: 50 5eq peak filter 2: 125, 10, 55
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, -30
7eq band 1 q: 10 7eq peak filter 4: 500, 10, -25
8eq band 1 gain: 110 8eq peak filter 5: 1000, 10, 15
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 50
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 95
11eq band 2 gain: 55 11eq peak filter 8: 8000, 10, 130
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 145
13eq band 3 q: 10
14eq band 3 gain: -30
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: -25
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 15
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 50
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 95
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 130
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 145
diff --git a/lib/rbcodec/dsp/eqs/Hip-Hop.cfg b/lib/rbcodec/dsp/eqs/Hip-Hop.cfg
index 54f11fb364..fac476d3a0 100644
--- a/lib/rbcodec/dsp/eqs/Hip-Hop.cfg
+++ b/lib/rbcodec/dsp/eqs/Hip-Hop.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 65 2eq precut: 65
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 65
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 65
5eq band 0 gain: 65 5eq peak filter 2: 125, 10, 25
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 25
7eq band 1 q: 10 7eq peak filter 4: 500, 10, -10
8eq band 1 gain: 65 8eq peak filter 5: 1000, 10, -10
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 15
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 15
11eq band 2 gain: 25 11eq peak filter 8: 8000, 10, 35
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 35
13eq band 3 q: 10
14eq band 3 gain: 25
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: -10
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: -10
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 15
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 15
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 35
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 35
diff --git a/lib/rbcodec/dsp/eqs/Jazz.cfg b/lib/rbcodec/dsp/eqs/Jazz.cfg
index 04c1e346cd..c57f1be9f5 100644
--- a/lib/rbcodec/dsp/eqs/Jazz.cfg
+++ b/lib/rbcodec/dsp/eqs/Jazz.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 60 2eq precut: 60
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 40
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 40
5eq band 0 gain: 40 5eq peak filter 2: 125, 10, 15
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 15
7eq band 1 q: 10 7eq peak filter 4: 500, 10, -25
8eq band 1 gain: 40 8eq peak filter 5: 1000, 10, -25
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 5
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 5
11eq band 2 gain: 15 11eq peak filter 8: 8000, 10, 60
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 60
13eq band 3 q: 10
14eq band 3 gain: 15
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: -25
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: -25
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 5
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 5
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 60
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 60
diff --git a/lib/rbcodec/dsp/eqs/Live.cfg b/lib/rbcodec/dsp/eqs/Live.cfg
index 67585421f2..b4377a6ca1 100644
--- a/lib/rbcodec/dsp/eqs/Live.cfg
+++ b/lib/rbcodec/dsp/eqs/Live.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 55 2eq precut: 55
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, -50
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: -50 5eq peak filter 2: 125, 10, 40
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 55
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 55
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 55
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 40
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 25
11eq band 2 gain: 40 11eq peak filter 8: 8000, 10, 25
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 25
13eq band 3 q: 10
14eq band 3 gain: 55
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 55
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 55
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 40
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 25
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 25
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 25
diff --git a/lib/rbcodec/dsp/eqs/Lounge.cfg b/lib/rbcodec/dsp/eqs/Lounge.cfg
index cac40eb907..90510e16f6 100644
--- a/lib/rbcodec/dsp/eqs/Lounge.cfg
+++ b/lib/rbcodec/dsp/eqs/Lounge.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 20 2eq precut: 20
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, -25
4eq band 0 q: 7 4eq peak filter 1: 64, 10, -25
5eq band 0 gain: -25 5eq peak filter 2: 125, 10, 5
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 5
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 20
8eq band 1 gain: -25 8eq peak filter 5: 1000, 10, 20
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, -15
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, -15
11eq band 2 gain: 5 11eq peak filter 8: 8000, 10, 15
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 15
13eq band 3 q: 10
14eq band 3 gain: 5
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 20
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 20
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: -15
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: -15
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 15
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 15
diff --git a/lib/rbcodec/dsp/eqs/Party.cfg b/lib/rbcodec/dsp/eqs/Party.cfg
index 6f6001afc8..c97ae8d085 100644
--- a/lib/rbcodec/dsp/eqs/Party.cfg
+++ b/lib/rbcodec/dsp/eqs/Party.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 70 2eq precut: 70
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 70
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 70
5eq band 0 gain: 70 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 70 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 0
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 0
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 70
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 70
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 0
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 0
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 70
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 70
diff --git a/lib/rbcodec/dsp/eqs/Pop.cfg b/lib/rbcodec/dsp/eqs/Pop.cfg
index 2584065f06..cab887fb9f 100644
--- a/lib/rbcodec/dsp/eqs/Pop.cfg
+++ b/lib/rbcodec/dsp/eqs/Pop.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 80 2eq precut: 80
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, -15
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 50
5eq band 0 gain: -15 5eq peak filter 2: 125, 10, 70
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 80
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 55
8eq band 1 gain: 50 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, -25
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, -25
11eq band 2 gain: 70 11eq peak filter 8: 8000, 10, 15
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 15
13eq band 3 q: 10
14eq band 3 gain: 80
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 55
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: -25
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: -25
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 15
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 15
diff --git a/lib/rbcodec/dsp/eqs/R&B.cfg b/lib/rbcodec/dsp/eqs/R&B.cfg
index 283e02ac9e..c521af9bcf 100644
--- a/lib/rbcodec/dsp/eqs/R&B.cfg
+++ b/lib/rbcodec/dsp/eqs/R&B.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 45 2eq precut: 45
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 35
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 35
5eq band 0 gain: 35 5eq peak filter 2: 125, 10, 45
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 45
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 5
8eq band 1 gain: 35 8eq peak filter 5: 1000, 10, 5
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 25
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 25
11eq band 2 gain: 45 11eq peak filter 8: 8000, 10, 30
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 30
13eq band 3 q: 10
14eq band 3 gain: 45
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 5
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 5
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 25
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 25
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 30
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 30
diff --git a/lib/rbcodec/dsp/eqs/Reggae.cfg b/lib/rbcodec/dsp/eqs/Reggae.cfg
index 11def53612..9137b60491 100644
--- a/lib/rbcodec/dsp/eqs/Reggae.cfg
+++ b/lib/rbcodec/dsp/eqs/Reggae.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 65 2eq precut: 65
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 0
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 0
5eq band 0 gain: 0 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, -55
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 0 8eq peak filter 5: 1000, 10, 65
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 65
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 0
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: -55
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 65
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 65
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 0
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0
diff --git a/lib/rbcodec/dsp/eqs/Rock.cfg b/lib/rbcodec/dsp/eqs/Rock.cfg
index 788c8b89af..5e3e9918d2 100644
--- a/lib/rbcodec/dsp/eqs/Rock.cfg
+++ b/lib/rbcodec/dsp/eqs/Rock.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 110 2eq precut: 110
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 80
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 50
5eq band 0 gain: 80 5eq peak filter 2: 125, 10, -55
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, -80
7eq band 1 q: 10 7eq peak filter 4: 500, 10, -30
8eq band 1 gain: 50 8eq peak filter 5: 1000, 10, 40
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 90
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 110
11eq band 2 gain: -55 11eq peak filter 8: 8000, 10, 110
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 110
13eq band 3 q: 10
14eq band 3 gain: -80
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: -30
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 40
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 90
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 110
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 110
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 110
diff --git a/lib/rbcodec/dsp/eqs/Ska.cfg b/lib/rbcodec/dsp/eqs/Ska.cfg
index b0848ad78f..542f011438 100644
--- a/lib/rbcodec/dsp/eqs/Ska.cfg
+++ b/lib/rbcodec/dsp/eqs/Ska.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 110 2eq precut: 110
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, -25
4eq band 0 q: 7 4eq peak filter 1: 64, 10, -50
5eq band 0 gain: -25 5eq peak filter 2: 125, 10, -40
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 0
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 40
8eq band 1 gain: -50 8eq peak filter 5: 1000, 10, 55
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 90
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 95
11eq band 2 gain: -40 11eq peak filter 8: 8000, 10, 110
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 95
13eq band 3 q: 10
14eq band 3 gain: 0
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 40
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 55
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 90
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 95
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 110
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 95
diff --git a/lib/rbcodec/dsp/eqs/Soft.cfg b/lib/rbcodec/dsp/eqs/Soft.cfg
index e9f0f03f51..a2b5ede3d0 100644
--- a/lib/rbcodec/dsp/eqs/Soft.cfg
+++ b/lib/rbcodec/dsp/eqs/Soft.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 120 2eq precut: 120
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 50
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 15
5eq band 0 gain: 50 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, -25
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 0
8eq band 1 gain: 15 8eq peak filter 5: 1000, 10, 40
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 80
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 95
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 110
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 120
13eq band 3 q: 10
14eq band 3 gain: -25
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 0
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 40
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 80
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 95
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 110
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 120
diff --git a/lib/rbcodec/dsp/eqs/Techno.cfg b/lib/rbcodec/dsp/eqs/Techno.cfg
index 1125d49914..96ef79e2c7 100644
--- a/lib/rbcodec/dsp/eqs/Techno.cfg
+++ b/lib/rbcodec/dsp/eqs/Techno.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 95 2eq precut: 95
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, 80
4eq band 0 q: 7 4eq peak filter 1: 64, 10, 55
5eq band 0 gain: 80 5eq peak filter 2: 125, 10, 0
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, -55
7eq band 1 q: 10 7eq peak filter 4: 500, 10, -50
8eq band 1 gain: 55 8eq peak filter 5: 1000, 10, 0
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 80
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 95
11eq band 2 gain: 0 11eq peak filter 8: 8000, 10, 95
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 90
13eq band 3 q: 10
14eq band 3 gain: -55
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: -50
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 0
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 80
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 95
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 95
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 90
diff --git a/lib/rbcodec/dsp/eqs/Vocal.cfg b/lib/rbcodec/dsp/eqs/Vocal.cfg
index fa8fd89a19..80b1139ffa 100644
--- a/lib/rbcodec/dsp/eqs/Vocal.cfg
+++ b/lib/rbcodec/dsp/eqs/Vocal.cfg
@@ -1,32 +1,12 @@
1eq enabled: on 1eq enabled: on
2eq precut: 45 2eq precut: 45
3eq band 0 cutoff: 32 3eq low shelf filter: 32, 7, -45
4eq band 0 q: 7 4eq peak filter 1: 64, 10, -45
5eq band 0 gain: -45 5eq peak filter 2: 125, 10, 5
6eq band 1 cutoff: 64 6eq peak filter 3: 250, 10, 5
7eq band 1 q: 10 7eq peak filter 4: 500, 10, 45
8eq band 1 gain: -45 8eq peak filter 5: 1000, 10, 45
9eq band 2 cutoff: 125 9eq peak filter 6: 2000, 10, 20
10eq band 2 q: 10 10eq peak filter 7: 4000, 10, 20
11eq band 2 gain: 5 11eq peak filter 8: 8000, 10, 0
12eq band 3 cutoff: 250 12eq high shelf filter: 16000, 7, 0
13eq band 3 q: 10
14eq band 3 gain: 5
15eq band 4 cutoff: 500
16eq band 4 q: 10
17eq band 4 gain: 45
18eq band 5 cutoff: 1000
19eq band 5 q: 10
20eq band 5 gain: 45
21eq band 6 cutoff: 2000
22eq band 6 q: 10
23eq band 6 gain: 20
24eq band 7 cutoff: 4000
25eq band 7 q: 10
26eq band 7 gain: 20
27eq band 8 cutoff: 8000
28eq band 8 q: 10
29eq band 8 gain: 0
30eq band 9 cutoff: 16000
31eq band 9 q: 7
32eq band 9 gain: 0