diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-08-14 21:30:06 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-08-14 21:30:06 +0000 |
commit | b3bda03db01eb5ffb2c087258c777ceb772cdc25 (patch) | |
tree | a9eeab42d302a115c24dba21c8bad084e96f9308 | |
parent | bfe55a4a09a6e7dfc04df464ccec6ce427ddbdc1 (diff) | |
download | rockbox-b3bda03db01eb5ffb2c087258c777ceb772cdc25.tar.gz rockbox-b3bda03db01eb5ffb2c087258c777ceb772cdc25.zip |
Added Balance setting
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1744 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/main.c | 1 | ||||
-rw-r--r-- | apps/settings.c | 10 | ||||
-rw-r--r-- | apps/settings.h | 7 | ||||
-rw-r--r-- | apps/sound_menu.c | 10 | ||||
-rw-r--r-- | firmware/mpeg.c | 70 | ||||
-rw-r--r-- | firmware/mpeg.h | 8 |
6 files changed, 69 insertions, 37 deletions
diff --git a/apps/main.c b/apps/main.c index a6e90eed3c..22fd8f6051 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -152,6 +152,7 @@ void init(void) | |||
152 | mpeg_init( global_settings.volume, | 152 | mpeg_init( global_settings.volume, |
153 | global_settings.bass, | 153 | global_settings.bass, |
154 | global_settings.treble, | 154 | global_settings.treble, |
155 | global_settings.balance, | ||
155 | global_settings.loudness, | 156 | global_settings.loudness, |
156 | global_settings.bass_boost, | 157 | global_settings.bass_boost, |
157 | global_settings.avc ); | 158 | global_settings.avc ); |
diff --git a/apps/settings.c b/apps/settings.c index ef51727105..8c73aab87b 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -39,7 +39,7 @@ struct user_settings global_settings; | |||
39 | 39 | ||
40 | static unsigned short last_checksum = 0; | 40 | static unsigned short last_checksum = 0; |
41 | 41 | ||
42 | #define CONFIG_BLOCK_VERSION 0 | 42 | #define CONFIG_BLOCK_VERSION 1 |
43 | #define CONFIG_BLOCK_SIZE 44 | 43 | #define CONFIG_BLOCK_SIZE 44 |
44 | 44 | ||
45 | /******************************************** | 45 | /******************************************** |
@@ -339,12 +339,12 @@ void settings_reset(void) { | |||
339 | DEBUGF( "settings_reset()\n" ); | 339 | DEBUGF( "settings_reset()\n" ); |
340 | 340 | ||
341 | global_settings.volume = mpeg_sound_default(SOUND_VOLUME); | 341 | global_settings.volume = mpeg_sound_default(SOUND_VOLUME); |
342 | global_settings.balance = DEFAULT_BALANCE_SETTING; | 342 | global_settings.balance = mpeg_sound_default(SOUND_BALANCE); |
343 | global_settings.bass = mpeg_sound_default(SOUND_BASS); | 343 | global_settings.bass = mpeg_sound_default(SOUND_BASS); |
344 | global_settings.treble = mpeg_sound_default(SOUND_TREBLE); | 344 | global_settings.treble = mpeg_sound_default(SOUND_TREBLE); |
345 | global_settings.loudness = DEFAULT_LOUDNESS_SETTING; | 345 | global_settings.loudness = mpeg_sound_default(SOUND_LOUDNESS); |
346 | global_settings.bass_boost = DEFAULT_BASS_BOOST_SETTING; | 346 | global_settings.bass_boost = mpeg_sound_default(SOUND_SUPERBASS); |
347 | global_settings.avc = DEFAULT_AVC_SETTING; | 347 | global_settings.avc = mpeg_sound_default(SOUND_AVC); |
348 | global_settings.contrast = DEFAULT_CONTRAST_SETTING; | 348 | global_settings.contrast = DEFAULT_CONTRAST_SETTING; |
349 | global_settings.poweroff = DEFAULT_POWEROFF_SETTING; | 349 | global_settings.poweroff = DEFAULT_POWEROFF_SETTING; |
350 | global_settings.backlight = DEFAULT_BACKLIGHT_SETTING; | 350 | global_settings.backlight = DEFAULT_BACKLIGHT_SETTING; |
diff --git a/apps/settings.h b/apps/settings.h index 115aab0f74..52f67bdf08 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -97,13 +97,6 @@ extern struct user_settings global_settings; | |||
97 | 97 | ||
98 | /* system defines */ | 98 | /* system defines */ |
99 | 99 | ||
100 | #define DEFAULT_VOLUME_SETTING 70/2 | ||
101 | #define DEFAULT_BALANCE_SETTING 50 | ||
102 | #define DEFAULT_BASS_SETTING 50/2 | ||
103 | #define DEFAULT_TREBLE_SETTING 50/2 | ||
104 | #define DEFAULT_LOUDNESS_SETTING 0 | ||
105 | #define DEFAULT_BASS_BOOST_SETTING 0 | ||
106 | #define DEFAULT_AVC_SETTING 0 | ||
107 | #ifdef HAVE_LCD_CHARCELLS | 100 | #ifdef HAVE_LCD_CHARCELLS |
108 | #define MAX_CONTRAST_SETTING 31 | 101 | #define MAX_CONTRAST_SETTING 31 |
109 | #define DEFAULT_CONTRAST_SETTING 30 | 102 | #define DEFAULT_CONTRAST_SETTING 30 |
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index 70ecb8708d..1b44859a2b 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -105,6 +105,10 @@ void set_sound(char* string, | |||
105 | break; | 105 | break; |
106 | } | 106 | } |
107 | mpeg_sound_set(setting, *variable); | 107 | mpeg_sound_set(setting, *variable); |
108 | #ifdef HAVE_MAS3507D | ||
109 | if(setting == SOUND_BALANCE) | ||
110 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | ||
111 | #endif | ||
108 | } | 112 | } |
109 | lcd_stop_scroll(); | 113 | lcd_stop_scroll(); |
110 | } | 114 | } |
@@ -114,6 +118,11 @@ static void volume(void) | |||
114 | set_sound("Volume", &global_settings.volume, SOUND_VOLUME); | 118 | set_sound("Volume", &global_settings.volume, SOUND_VOLUME); |
115 | } | 119 | } |
116 | 120 | ||
121 | static void balance(void) | ||
122 | { | ||
123 | set_sound("Balance", &global_settings.balance, SOUND_BALANCE); | ||
124 | } | ||
125 | |||
117 | static void bass(void) | 126 | static void bass(void) |
118 | { | 127 | { |
119 | set_sound("Bass", &global_settings.bass, SOUND_BASS); | 128 | set_sound("Bass", &global_settings.bass, SOUND_BASS); |
@@ -150,6 +159,7 @@ void sound_menu(void) | |||
150 | { "Volume", volume }, | 159 | { "Volume", volume }, |
151 | { "Bass", bass }, | 160 | { "Bass", bass }, |
152 | { "Treble", treble }, | 161 | { "Treble", treble }, |
162 | { "Balance", balance }, | ||
153 | #ifdef HAVE_MAS3587F | 163 | #ifdef HAVE_MAS3587F |
154 | { "Loudness", loudness }, | 164 | { "Loudness", loudness }, |
155 | { "Bass Boost", bass_boost }, | 165 | { "Bass Boost", bass_boost }, |
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 698a36cbe5..d1b27d3145 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -59,7 +59,7 @@ static char *units[] = | |||
59 | "%", /* Volume */ | 59 | "%", /* Volume */ |
60 | "dB", /* Bass */ | 60 | "dB", /* Bass */ |
61 | "dB", /* Treble */ | 61 | "dB", /* Treble */ |
62 | "", /* Balance */ | 62 | "%", /* Balance */ |
63 | "dB", /* Loudness */ | 63 | "dB", /* Loudness */ |
64 | "%" /* Bass boost */ | 64 | "%" /* Bass boost */ |
65 | }; | 65 | }; |
@@ -79,7 +79,7 @@ static int minval[] = | |||
79 | 0, /* Volume */ | 79 | 0, /* Volume */ |
80 | 0, /* Bass */ | 80 | 0, /* Bass */ |
81 | 0, /* Treble */ | 81 | 0, /* Treble */ |
82 | 0, /* Balance */ | 82 | -50, /* Balance */ |
83 | 0, /* Loudness */ | 83 | 0, /* Loudness */ |
84 | 0 /* Bass boost */ | 84 | 0 /* Bass boost */ |
85 | }; | 85 | }; |
@@ -94,7 +94,7 @@ static int maxval[] = | |||
94 | 30, /* Bass */ | 94 | 30, /* Bass */ |
95 | 30, /* Treble */ | 95 | 30, /* Treble */ |
96 | #endif | 96 | #endif |
97 | 100, /* Balance */ | 97 | 50, /* Balance */ |
98 | 17, /* Loudness */ | 98 | 17, /* Loudness */ |
99 | 10 /* Bass boost */ | 99 | 10 /* Bass boost */ |
100 | }; | 100 | }; |
@@ -109,7 +109,7 @@ static int defaultval[] = | |||
109 | 15+7, /* Bass */ | 109 | 15+7, /* Bass */ |
110 | 15+7, /* Treble */ | 110 | 15+7, /* Treble */ |
111 | #endif | 111 | #endif |
112 | 50, /* Balance */ | 112 | 0, /* Balance */ |
113 | 0, /* Loudness */ | 113 | 0, /* Loudness */ |
114 | 0 /* Bass boost */ | 114 | 0 /* Bass boost */ |
115 | }; | 115 | }; |
@@ -1266,10 +1266,11 @@ bool mpeg_is_playing(void) | |||
1266 | 1266 | ||
1267 | #ifndef SIMULATOR | 1267 | #ifndef SIMULATOR |
1268 | #ifdef HAVE_MAS3507D | 1268 | #ifdef HAVE_MAS3507D |
1269 | int current_volume=0; /* all values in tenth of dB */ | 1269 | int current_left_volume = 0; /* all values in tenth of dB */ |
1270 | int current_treble=0; | 1270 | int current_right_volume = 0; /* all values in tenth of dB */ |
1271 | int current_bass=0; | 1271 | int current_treble = 0; |
1272 | int current_balance=0; | 1272 | int current_bass = 0; |
1273 | int current_balance = 0; | ||
1273 | 1274 | ||
1274 | /* convert tenth of dB volume to register value */ | 1275 | /* convert tenth of dB volume to register value */ |
1275 | static int tenthdb2reg(int db) { | 1276 | static int tenthdb2reg(int db) { |
@@ -1292,14 +1293,9 @@ void set_prescaled_volume(void) | |||
1292 | mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]); | 1293 | mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]); |
1293 | 1294 | ||
1294 | /* gain up the analog volume to compensate the prescale reduction gain */ | 1295 | /* gain up the analog volume to compensate the prescale reduction gain */ |
1295 | r = l = current_volume + prescale; | 1296 | l = current_left_volume + prescale; |
1297 | r = current_right_volume + prescale; | ||
1296 | 1298 | ||
1297 | /* balance */ | ||
1298 | if (current_balance >= 0) | ||
1299 | l -= current_balance; | ||
1300 | else | ||
1301 | r += current_balance; | ||
1302 | |||
1303 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); | 1299 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); |
1304 | } | 1300 | } |
1305 | #endif /* HAVE_MAS3507D */ | 1301 | #endif /* HAVE_MAS3507D */ |
@@ -1310,7 +1306,11 @@ void mpeg_sound_set(int setting, int value) | |||
1310 | #ifdef SIMULATOR | 1306 | #ifdef SIMULATOR |
1311 | setting = value; | 1307 | setting = value; |
1312 | #else | 1308 | #else |
1309 | #ifdef HAVE_MAS3507D | ||
1310 | int l, r; | ||
1311 | #else | ||
1313 | int tmp; | 1312 | int tmp; |
1313 | #endif | ||
1314 | 1314 | ||
1315 | switch(setting) | 1315 | switch(setting) |
1316 | { | 1316 | { |
@@ -1321,15 +1321,44 @@ void mpeg_sound_set(int setting, int value) | |||
1321 | tmp = 0x7f00 * value / 100; | 1321 | tmp = 0x7f00 * value / 100; |
1322 | mas_codec_writereg(0x10, tmp & 0xff00); | 1322 | mas_codec_writereg(0x10, tmp & 0xff00); |
1323 | #else | 1323 | #else |
1324 | tmp = 0x38 * value / 100; | 1324 | l = value; |
1325 | r = value; | ||
1326 | |||
1327 | if(current_balance > 0) | ||
1328 | { | ||
1329 | l -= current_balance; | ||
1330 | if(l < 0) | ||
1331 | l = 0; | ||
1332 | } | ||
1333 | |||
1334 | if(current_balance < 0) | ||
1335 | { | ||
1336 | r += current_balance; | ||
1337 | if(r < 0) | ||
1338 | r = 0; | ||
1339 | } | ||
1340 | |||
1341 | l = 0x38 * l / 100; | ||
1342 | r = 0x38 * r / 100; | ||
1325 | 1343 | ||
1326 | /* store volume in tenth of dB */ | 1344 | /* store volume in tenth of dB */ |
1327 | current_volume = ( tmp < 0x08 ? tmp*30 - 780 : tmp*15 - 660 ); | 1345 | current_left_volume = ( l < 0x08 ? l*30 - 780 : l*15 - 660 ); |
1346 | current_right_volume = ( r < 0x08 ? r*30 - 780 : r*15 - 660 ); | ||
1328 | 1347 | ||
1329 | set_prescaled_volume(); | 1348 | set_prescaled_volume(); |
1330 | #endif | 1349 | #endif |
1331 | break; | 1350 | break; |
1332 | 1351 | ||
1352 | case SOUND_BALANCE: | ||
1353 | #ifdef HAVE_MAS3587F | ||
1354 | tmp = ((value * 127 / 100) & 0xff) << 8; | ||
1355 | mas_codec_writereg(0x11, tmp & 0xff00); | ||
1356 | #else | ||
1357 | /* Convert to percent */ | ||
1358 | current_balance = value * 2; | ||
1359 | #endif | ||
1360 | break; | ||
1361 | |||
1333 | case SOUND_BASS: | 1362 | case SOUND_BASS: |
1334 | #ifdef HAVE_MAS3587F | 1363 | #ifdef HAVE_MAS3587F |
1335 | tmp = (((value-12) * 8) & 0xff) << 8; | 1364 | tmp = (((value-12) * 8) & 0xff) << 8; |
@@ -1415,6 +1444,10 @@ int mpeg_val2phys(int setting, int value) | |||
1415 | result = value * 2; | 1444 | result = value * 2; |
1416 | break; | 1445 | break; |
1417 | 1446 | ||
1447 | case SOUND_BALANCE: | ||
1448 | result = value * 2; | ||
1449 | break; | ||
1450 | |||
1418 | case SOUND_BASS: | 1451 | case SOUND_BASS: |
1419 | #ifdef HAVE_MAS3587F | 1452 | #ifdef HAVE_MAS3587F |
1420 | result = value - 12; | 1453 | result = value - 12; |
@@ -1444,7 +1477,7 @@ int mpeg_val2phys(int setting, int value) | |||
1444 | return result; | 1477 | return result; |
1445 | } | 1478 | } |
1446 | 1479 | ||
1447 | void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, int avc) | 1480 | void mpeg_init(int volume, int bass, int treble, int balance, int loudness, int bass_boost, int avc) |
1448 | { | 1481 | { |
1449 | #ifdef SIMULATOR | 1482 | #ifdef SIMULATOR |
1450 | volume = bass = treble = loudness = bass_boost = avc; | 1483 | volume = bass = treble = loudness = bass_boost = avc; |
@@ -1556,6 +1589,7 @@ void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, i | |||
1556 | 1589 | ||
1557 | mpeg_sound_set(SOUND_BASS, bass); | 1590 | mpeg_sound_set(SOUND_BASS, bass); |
1558 | mpeg_sound_set(SOUND_TREBLE, treble); | 1591 | mpeg_sound_set(SOUND_TREBLE, treble); |
1592 | mpeg_sound_set(SOUND_BALANCE, balance); | ||
1559 | mpeg_sound_set(SOUND_VOLUME, volume); | 1593 | mpeg_sound_set(SOUND_VOLUME, volume); |
1560 | 1594 | ||
1561 | #ifdef HAVE_MAS3587F | 1595 | #ifdef HAVE_MAS3587F |
diff --git a/firmware/mpeg.h b/firmware/mpeg.h index 2838c47d45..48367317dc 100644 --- a/firmware/mpeg.h +++ b/firmware/mpeg.h | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include <stdbool.h> | 22 | #include <stdbool.h> |
23 | 23 | ||
24 | void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, int avc); | 24 | void mpeg_init(int volume, int bass, int treble, int balance, int loudness, int bass_boost, int avc); |
25 | void mpeg_play(char* trackname); | 25 | void mpeg_play(char* trackname); |
26 | void mpeg_stop(void); | 26 | void mpeg_stop(void); |
27 | void mpeg_pause(void); | 27 | void mpeg_pause(void); |
@@ -44,15 +44,9 @@ bool mpeg_has_changed_track(void); | |||
44 | #define SOUND_BASS 1 | 44 | #define SOUND_BASS 1 |
45 | #define SOUND_TREBLE 2 | 45 | #define SOUND_TREBLE 2 |
46 | #define SOUND_BALANCE 3 | 46 | #define SOUND_BALANCE 3 |
47 | |||
48 | #ifdef HAVE_MAS3587F | ||
49 | #define SOUND_LOUDNESS 4 | 47 | #define SOUND_LOUDNESS 4 |
50 | #define SOUND_SUPERBASS 5 | 48 | #define SOUND_SUPERBASS 5 |
51 | #define SOUND_AVC 6 | 49 | #define SOUND_AVC 6 |
52 | #define SOUND_NUMSETTINGS 7 | 50 | #define SOUND_NUMSETTINGS 7 |
53 | #else | ||
54 | #define SOUND_DEEMPH 4 | ||
55 | #define SOUND_NUMSETTINGS 5 | ||
56 | #endif | ||
57 | 51 | ||
58 | #endif | 52 | #endif |