summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/lang/english.lang42
-rw-r--r--apps/main.c18
-rw-r--r--apps/recorder/radio.c18
-rw-r--r--apps/recorder/recording.c9
-rw-r--r--apps/settings.c35
-rw-r--r--apps/settings.h8
-rw-r--r--apps/sound_menu.c67
7 files changed, 150 insertions, 47 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index f9f1bf3bc2..062c7a0d75 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -326,9 +326,9 @@ voice: "Loudness"
326new: 326new:
327 327
328id: LANG_BBOOST 328id: LANG_BBOOST
329desc: in sound settings 329desc: DEPRECATED
330eng: "Bass Boost" 330eng: ""
331voice: "Bass Boost" 331voice: ""
332new: 332new:
333 333
334id: LANG_DECAY 334id: LANG_DECAY
@@ -2757,3 +2757,39 @@ desc: in radio screen
2757eng: "Action" 2757eng: "Action"
2758voice: "" 2758voice: ""
2759new: 2759new:
2760
2761id: LANG_MDB_STRENGTH
2762desc: in sound settings
2763eng: "MDB Strength"
2764voice: "MDB Strength"
2765new:
2766
2767id: LANG_MDB_HARMONICS
2768desc: in sound settings
2769eng: "MDB Harmonics"
2770voice: "MDB Harmonics"
2771new:
2772
2773id: LANG_MDB_CENTER
2774desc: in sound settings
2775eng: "MDB Center frequency"
2776voice: "MDB Center frequency"
2777new:
2778
2779id: LANG_MDB_SHAPE
2780desc: in sound settings
2781eng: "MDB Shape"
2782voice: "MDB Shape"
2783new:
2784
2785id: LANG_MDB_ENABLE
2786desc: in sound settings
2787eng: "MDB Enable"
2788voice: "MDB Enable"
2789new:
2790
2791id: LANG_SUPERBASS
2792desc: in sound settings
2793eng: "Super bass"
2794voice: "Super bass"
2795new:
diff --git a/apps/main.c b/apps/main.c
index 9ead6e2db3..7a4590ebe1 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -89,9 +89,14 @@ void init(void)
89 global_settings.treble, 89 global_settings.treble,
90 global_settings.balance, 90 global_settings.balance,
91 global_settings.loudness, 91 global_settings.loudness,
92 global_settings.bass_boost,
93 global_settings.avc, 92 global_settings.avc,
94 global_settings.channel_config ); 93 global_settings.channel_config,
94 global_settings.mdb_strength,
95 global_settings.mdb_harmonics,
96 global_settings.mdb_center,
97 global_settings.mdb_shape,
98 global_settings.mdb_enable,
99 global_settings.superbass);
95 mpeg_init(); 100 mpeg_init();
96 while (button_get(false) != 0) 101 while (button_get(false) != 0)
97 ; /* Empty the keyboard buffer */ 102 ; /* Empty the keyboard buffer */
@@ -227,9 +232,14 @@ void init(void)
227 global_settings.treble, 232 global_settings.treble,
228 global_settings.balance, 233 global_settings.balance,
229 global_settings.loudness, 234 global_settings.loudness,
230 global_settings.bass_boost,
231 global_settings.avc, 235 global_settings.avc,
232 global_settings.channel_config ); 236 global_settings.channel_config,
237 global_settings.mdb_strength,
238 global_settings.mdb_harmonics,
239 global_settings.mdb_center,
240 global_settings.mdb_shape,
241 global_settings.mdb_enable,
242 global_settings.superbass);
233 mpeg_init(); 243 mpeg_init();
234 talk_init(); 244 talk_init();
235 245
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index d4dc8a93aa..ce4bc8b4d6 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -203,14 +203,7 @@ bool radio_screen(void)
203 203
204 mpeg_init_recording(); 204 mpeg_init_recording();
205 205
206 mpeg_sound_channel_config(global_settings.channel_config); 206 sound_settings_apply();
207 mpeg_sound_set(SOUND_BASS, global_settings.bass);
208 mpeg_sound_set(SOUND_TREBLE, global_settings.treble);
209 mpeg_sound_set(SOUND_BALANCE, global_settings.balance);
210 mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
211 mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness);
212 mpeg_sound_set(SOUND_SUPERBASS, global_settings.bass_boost);
213 mpeg_sound_set(SOUND_AVC, global_settings.avc);
214 207
215 /* Yes, we use the D/A for monitoring */ 208 /* Yes, we use the D/A for monitoring */
216 peak_meter_playback(true); 209 peak_meter_playback(true);
@@ -532,14 +525,7 @@ bool radio_screen(void)
532 525
533 mpeg_init_playback(); 526 mpeg_init_playback();
534 527
535 mpeg_sound_channel_config(global_settings.channel_config); 528 sound_settings_apply();
536 mpeg_sound_set(SOUND_BASS, global_settings.bass);
537 mpeg_sound_set(SOUND_TREBLE, global_settings.treble);
538 mpeg_sound_set(SOUND_BALANCE, global_settings.balance);
539 mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
540 mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness);
541 mpeg_sound_set(SOUND_SUPERBASS, global_settings.bass_boost);
542 mpeg_sound_set(SOUND_AVC, global_settings.avc);
543 529
544 fmradio_set_status(0); 530 fmradio_set_status(0);
545 531
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index 40c416971a..60b6e4743e 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -606,14 +606,7 @@ bool recording_screen(void)
606 606
607 mpeg_init_playback(); 607 mpeg_init_playback();
608 608
609 mpeg_sound_channel_config(global_settings.channel_config); 609 sound_settings_apply();
610 mpeg_sound_set(SOUND_BASS, global_settings.bass);
611 mpeg_sound_set(SOUND_TREBLE, global_settings.treble);
612 mpeg_sound_set(SOUND_BALANCE, global_settings.balance);
613 mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
614 mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness);
615 mpeg_sound_set(SOUND_SUPERBASS, global_settings.bass_boost);
616 mpeg_sound_set(SOUND_AVC, global_settings.avc);
617 610
618 lcd_setfont(FONT_UI); 611 lcd_setfont(FONT_UI);
619 612
diff --git a/apps/settings.c b/apps/settings.c
index 79fbfa5090..8434d3e211 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -71,7 +71,7 @@ char rockboxdir[] = ROCKBOX_DIR; /* config/font/data file directory */
71char rec_base_directory[] = REC_BASE_DIR; 71char rec_base_directory[] = REC_BASE_DIR;
72 72
73 73
74#define CONFIG_BLOCK_VERSION 13 74#define CONFIG_BLOCK_VERSION 14
75#define CONFIG_BLOCK_SIZE 512 75#define CONFIG_BLOCK_SIZE 512
76#define RTC_BLOCK_SIZE 44 76#define RTC_BLOCK_SIZE 44
77 77
@@ -165,8 +165,8 @@ static struct bit_entry rtc_bits[] =
165 {5 | SIGNED, S_O(treble), 0, "treble", NULL }, /* -15..+15 / -12..+12 */ 165 {5 | SIGNED, S_O(treble), 0, "treble", NULL }, /* -15..+15 / -12..+12 */
166#ifdef HAVE_MAS3587F 166#ifdef HAVE_MAS3587F
167 {5, S_O(loudness), 0, "loudness", NULL }, /* 0...17 */ 167 {5, S_O(loudness), 0, "loudness", NULL }, /* 0...17 */
168 {7, S_O(bass_boost), 0, "bass boost", NULL }, /* 0...100 */
169 {3, S_O(avc), 0, "auto volume", "off,20ms,2,4,8" }, 168 {3, S_O(avc), 0, "auto volume", "off,20ms,2,4,8" },
169 {1, S_O(superbass), false, "superbass", off_on },
170#endif 170#endif
171 {3, S_O(channel_config), 6, "channels", 171 {3, S_O(channel_config), 6, "channels",
172 "stereo,stereo narrow,mono,mono left,mono right,karaoke,stereo wide" }, 172 "stereo,stereo narrow,mono,mono left,mono right,karaoke,stereo wide" },
@@ -325,7 +325,11 @@ static struct bit_entry hd_bits[] =
325 /* If values are just added to the end, no need to bump the version. */ 325 /* If values are just added to the end, no need to bump the version. */
326 {2, S_O(sort_file), 0, "sort files", "alpha,oldest,newest,type" }, 326 {2, S_O(sort_file), 0, "sort files", "alpha,oldest,newest,type" },
327 {2, S_O(sort_dir), 0, "sort dirs", "alpha,oldest,newest" }, 327 {2, S_O(sort_dir), 0, "sort dirs", "alpha,oldest,newest" },
328 328 {7, S_O(mdb_strength), 0, "mdb strength", NULL},
329 {7, S_O(mdb_harmonics), 0, "mdb harmonics", NULL},
330 {9, S_O(mdb_center), 0, "mdb center", NULL},
331 {9, S_O(mdb_shape), 0, "mdb shape", NULL},
332 {1, S_O(mdb_enable), 0, "mdb enable", off_on},
329 333
330 /* Sum of all bit sizes must not grow beyond 0xB8*8 = 1472 */ 334 /* Sum of all bit sizes must not grow beyond 0xB8*8 = 1472 */
331}; 335};
@@ -667,10 +671,8 @@ void settings_apply_pm_range(void)
667} 671}
668#endif /* HAVE_LCD_BITMAP */ 672#endif /* HAVE_LCD_BITMAP */
669 673
670void settings_apply(void) 674void sound_settings_apply(void)
671{ 675{
672 char buf[64];
673
674 mpeg_sound_set(SOUND_BASS, global_settings.bass); 676 mpeg_sound_set(SOUND_BASS, global_settings.bass);
675 mpeg_sound_set(SOUND_TREBLE, global_settings.treble); 677 mpeg_sound_set(SOUND_TREBLE, global_settings.treble);
676 mpeg_sound_set(SOUND_BALANCE, global_settings.balance); 678 mpeg_sound_set(SOUND_BALANCE, global_settings.balance);
@@ -678,9 +680,21 @@ void settings_apply(void)
678 mpeg_sound_set(SOUND_CHANNELS, global_settings.channel_config); 680 mpeg_sound_set(SOUND_CHANNELS, global_settings.channel_config);
679#ifdef HAVE_MAS3587F 681#ifdef HAVE_MAS3587F
680 mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness); 682 mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness);
681 mpeg_sound_set(SOUND_SUPERBASS, global_settings.bass_boost);
682 mpeg_sound_set(SOUND_AVC, global_settings.avc); 683 mpeg_sound_set(SOUND_AVC, global_settings.avc);
684 mpeg_sound_set(SOUND_MDB_STRENGTH, global_settings.mdb_strength);
685 mpeg_sound_set(SOUND_MDB_HARMONICS, global_settings.mdb_harmonics);
686 mpeg_sound_set(SOUND_MDB_CENTER, global_settings.mdb_center);
687 mpeg_sound_set(SOUND_MDB_SHAPE, global_settings.mdb_shape);
688 mpeg_sound_set(SOUND_MDB_ENABLE, global_settings.mdb_enable);
689 mpeg_sound_set(SOUND_SUPERBASS, global_settings.superbass);
683#endif 690#endif
691}
692
693void settings_apply(void)
694{
695 char buf[64];
696
697 sound_settings_apply();
684 698
685 mpeg_set_buffer_margin(global_settings.buffer_margin); 699 mpeg_set_buffer_margin(global_settings.buffer_margin);
686 700
@@ -1207,9 +1221,14 @@ void settings_reset(void) {
1207 global_settings.bass = mpeg_sound_default(SOUND_BASS); 1221 global_settings.bass = mpeg_sound_default(SOUND_BASS);
1208 global_settings.treble = mpeg_sound_default(SOUND_TREBLE); 1222 global_settings.treble = mpeg_sound_default(SOUND_TREBLE);
1209 global_settings.loudness = mpeg_sound_default(SOUND_LOUDNESS); 1223 global_settings.loudness = mpeg_sound_default(SOUND_LOUDNESS);
1210 global_settings.bass_boost = mpeg_sound_default(SOUND_SUPERBASS);
1211 global_settings.avc = mpeg_sound_default(SOUND_AVC); 1224 global_settings.avc = mpeg_sound_default(SOUND_AVC);
1212 global_settings.channel_config = mpeg_sound_default(SOUND_CHANNELS); 1225 global_settings.channel_config = mpeg_sound_default(SOUND_CHANNELS);
1226 global_settings.mdb_strength = mpeg_sound_default(SOUND_MDB_STRENGTH);
1227 global_settings.mdb_harmonics = mpeg_sound_default(SOUND_MDB_HARMONICS);
1228 global_settings.mdb_center = mpeg_sound_default(SOUND_MDB_CENTER);
1229 global_settings.mdb_shape = mpeg_sound_default(SOUND_MDB_SHAPE);
1230 global_settings.mdb_enable = mpeg_sound_default(SOUND_MDB_ENABLE);
1231 global_settings.superbass = mpeg_sound_default(SOUND_SUPERBASS);
1213 global_settings.contrast = lcd_default_contrast(); 1232 global_settings.contrast = lcd_default_contrast();
1214 global_settings.wps_file[0] = '\0'; 1233 global_settings.wps_file[0] = '\0';
1215 global_settings.font_file[0] = '\0'; 1234 global_settings.font_file[0] = '\0';
diff --git a/apps/settings.h b/apps/settings.h
index baea723e4b..b7b0864b4c 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -71,9 +71,14 @@ struct user_settings
71 int bass; /* bass eq: 0-100 0=off 100=max */ 71 int bass; /* bass eq: 0-100 0=off 100=max */
72 int treble; /* treble eq: 0-100 0=low 100=high */ 72 int treble; /* treble eq: 0-100 0=low 100=high */
73 int loudness; /* loudness eq: 0-100 0=off 100=max */ 73 int loudness; /* loudness eq: 0-100 0=off 100=max */
74 int bass_boost; /* bass boost eq: 0-100 0=off 100=max */
75 int avc; /* auto volume correct: 0=off, 1=20ms, 2=2s 3=4s 4=8s */ 74 int avc; /* auto volume correct: 0=off, 1=20ms, 2=2s 3=4s 4=8s */
76 int channel_config; /* Stereo, Mono, Mono left, Mono right */ 75 int channel_config; /* Stereo, Mono, Mono left, Mono right */
76 int mdb_strength; /* 0-127dB */
77 int mdb_harmonics; /* 0-100% */
78 int mdb_center; /* 20-300Hz */
79 int mdb_shape; /* 50-300Hz */
80 bool mdb_enable; /* true/false */
81 bool superbass; /* true/false */
77 82
78 int rec_quality; /* 0-7 */ 83 int rec_quality; /* 0-7 */
79 int rec_source; /* 0=mic, 1=line, 2=S/PDIF */ 84 int rec_source; /* 0=mic, 1=line, 2=S/PDIF */
@@ -226,6 +231,7 @@ struct opt_items {
226int settings_save(void); 231int settings_save(void);
227void settings_load(int which); 232void settings_load(int which);
228void settings_reset(void); 233void settings_reset(void);
234void sound_settings_apply(void);
229void settings_apply(void); 235void settings_apply(void);
230void settings_apply_pm_range(void); 236void settings_apply_pm_range(void);
231void settings_display(void); 237void settings_display(void);
diff --git a/apps/sound_menu.c b/apps/sound_menu.c
index 4a6857d0cb..fe01cd9560 100644
--- a/apps/sound_menu.c
+++ b/apps/sound_menu.c
@@ -55,9 +55,11 @@ bool set_sound(char* string,
55 char* unit; 55 char* unit;
56 char str[32]; 56 char str[32];
57 int talkunit = UNIT_INT; 57 int talkunit = UNIT_INT;
58 int steps;
58 59
59 unit = mpeg_sound_unit(setting); 60 unit = mpeg_sound_unit(setting);
60 numdec = mpeg_sound_numdecimals(setting); 61 numdec = mpeg_sound_numdecimals(setting);
62 steps = mpeg_sound_steps(setting);
61 min = mpeg_sound_min(setting); 63 min = mpeg_sound_min(setting);
62 max = mpeg_sound_max(setting); 64 max = mpeg_sound_max(setting);
63 if (*unit == 'd') /* crude reconstruction */ 65 if (*unit == 'd') /* crude reconstruction */
@@ -103,7 +105,7 @@ bool set_sound(char* string,
103 case BUTTON_RIGHT: 105 case BUTTON_RIGHT:
104 case BUTTON_RIGHT | BUTTON_REPEAT: 106 case BUTTON_RIGHT | BUTTON_REPEAT:
105#endif 107#endif
106 (*variable)++; 108 (*variable)+=steps;
107 if(*variable > max ) 109 if(*variable > max )
108 *variable = max; 110 *variable = max;
109 changed = true; 111 changed = true;
@@ -116,7 +118,7 @@ bool set_sound(char* string,
116 case BUTTON_LEFT: 118 case BUTTON_LEFT:
117 case BUTTON_LEFT | BUTTON_REPEAT: 119 case BUTTON_LEFT | BUTTON_REPEAT:
118#endif 120#endif
119 (*variable)--; 121 (*variable)-=steps;
120 if(*variable < min ) 122 if(*variable < min )
121 *variable = min; 123 *variable = min;
122 changed = true; 124 changed = true;
@@ -176,10 +178,56 @@ static bool loudness(void)
176 SOUND_LOUDNESS); 178 SOUND_LOUDNESS);
177} 179}
178 180
179static bool bass_boost(void) 181static bool mdb_strength(void)
180{ 182{
181 return set_sound(str(LANG_BBOOST), &global_settings.bass_boost, 183 return set_sound(str(LANG_MDB_STRENGTH), &global_settings.mdb_strength,
182 SOUND_SUPERBASS); 184 SOUND_MDB_STRENGTH);
185}
186
187static bool mdb_harmonics(void)
188{
189 return set_sound(str(LANG_MDB_HARMONICS), &global_settings.mdb_harmonics,
190 SOUND_MDB_HARMONICS);
191}
192
193static bool mdb_center(void)
194{
195 return set_sound(str(LANG_MDB_CENTER), &global_settings.mdb_center,
196 SOUND_MDB_CENTER);
197}
198
199static bool mdb_shape(void)
200{
201 return set_sound(str(LANG_MDB_SHAPE), &global_settings.mdb_shape,
202 SOUND_MDB_SHAPE);
203}
204
205static void set_mdb_enable(bool value)
206{
207 mpeg_sound_set(SOUND_MDB_ENABLE, (int)value);
208}
209
210static bool mdb_enable(void)
211{
212 return set_bool_options(str(LANG_MDB_ENABLE),
213 &global_settings.mdb_enable,
214 STR(LANG_SET_BOOL_YES),
215 STR(LANG_SET_BOOL_NO),
216 set_mdb_enable);
217}
218
219static void set_superbass(bool value)
220{
221 mpeg_sound_set(SOUND_SUPERBASS, (int)value);
222}
223
224static bool superbass(void)
225{
226 return set_bool_options(str(LANG_SUPERBASS),
227 &global_settings.superbass,
228 STR(LANG_SET_BOOL_YES),
229 STR(LANG_SET_BOOL_NO),
230 set_superbass);
183} 231}
184 232
185static void set_avc(int val) 233static void set_avc(int val)
@@ -363,8 +411,13 @@ bool sound_menu(void)
363 { STR(LANG_CHANNEL_MENU), chanconf }, 411 { STR(LANG_CHANNEL_MENU), chanconf },
364#ifdef HAVE_MAS3587F 412#ifdef HAVE_MAS3587F
365 { STR(LANG_LOUDNESS), loudness }, 413 { STR(LANG_LOUDNESS), loudness },
366 { STR(LANG_BBOOST), bass_boost }, 414 { STR(LANG_AUTOVOL), avc },
367 { STR(LANG_AUTOVOL), avc } 415 { STR(LANG_SUPERBASS), superbass },
416 { STR(LANG_MDB_ENABLE), mdb_enable },
417 { STR(LANG_MDB_STRENGTH), mdb_strength },
418 { STR(LANG_MDB_HARMONICS), mdb_harmonics },
419 { STR(LANG_MDB_CENTER), mdb_center },
420 { STR(LANG_MDB_SHAPE), mdb_shape },
368#endif 421#endif
369 }; 422 };
370 423