--- ./apps/lang/english.lang.orig 2004-10-24 04:52:19.000000000 +0200 +++ ./apps/lang/english.lang 2005-01-03 11:53:05.390182400 +0100 @@ -2860,3 +2860,20 @@ voice: " " new: +id: LANG_FADE +desc: options menu to set fade mode +eng: "Volume fade" +voice: "" +new: + +id: LANG_FADE_ON_NP +desc: fade on next/previous +eng: "on Next/Previous" +voice: "" +new: + +id: LANG_FADE_ALL +desc: fade on all events +eng: "All events" +voice: "All" +new: --- ./apps/settings.c.orig 2004-12-21 14:35:02.000000000 +0100 +++ ./apps/settings.c 2005-01-03 11:53:06.011075200 +0100 @@ -262,7 +262,8 @@ #endif /* more playback */ {1, S_O(play_selected), true, "play selected", off_on }, - {1, S_O(fade_on_stop), true, "volume fade", off_on }, + {3, S_O(fade_mode), FADE_ON_NP, "volume fade", + "off,on_stop,on_np,all" }, {4, S_O(ff_rewind_min_step), FF_REWIND_1000, "scan min step", "1,2,3,4,5,6,8,10,15,20,25,30,45,60" }, {4, S_O(ff_rewind_accel), 3, "scan accel", NULL }, --- ./apps/settings.h.orig 2004-12-21 14:35:02.000000000 +0100 +++ ./apps/settings.h 2005-01-03 11:53:06.051132800 +0100 @@ -244,7 +244,7 @@ int jump_scroll; /* Fast jump when scrolling */ int jump_scroll_delay; /* Delay between jump scroll screens */ #endif - bool fade_on_stop; /* fade on pause/unpause/stop */ + int fade_mode; /* 0=off 1=on_stop 2=on_np 3=all */ bool caption_backlight; /* turn on backlight at end and start of track */ #ifdef CONFIG_TUNER @@ -356,4 +356,7 @@ /* recursive dir insert options */ enum { RECURSE_OFF, RECURSE_ON, RECURSE_ASK }; +/* fade mode options */ +enum { FADE_OFF, FADE_ON_STOP, FADE_ON_NP, FADE_ALL, NUM_FADE_MODES }; + #endif /* __SETTINGS_H__ */ --- ./apps/settings_menu.c.orig 2004-12-21 14:35:02.000000000 +0100 +++ ./apps/settings_menu.c 2005-01-03 11:53:06.091190400 +0100 @@ -460,6 +460,19 @@ return result; } +static bool fade_mode(void) +{ + static const struct opt_items names[] = { + { STR(LANG_OFF) }, + { STR(LANG_FADE_ON_STOP) }, + { STR(LANG_FADE_ON_NP) }, + { STR(LANG_FADE_ALL) } + }; + + return set_option( str(LANG_FADE), &global_settings.fade_mode, INT, + names, 4, NULL ); +} + static bool play_selected(void) { return set_bool( str(LANG_PLAY_SELECTED), &global_settings.play_selected ); @@ -849,12 +862,6 @@ INT, names, 14, NULL ); } -static bool set_fade_on_stop(void) -{ - return set_bool( str(LANG_FADE_ON_STOP), &global_settings.fade_on_stop ); -} - - static bool ff_rewind_accel(void) { static const struct opt_items names[] = { @@ -1020,7 +1027,7 @@ { ID2P(LANG_RESUME), resume }, { ID2P(LANG_WIND_MENU), ff_rewind_settings_menu }, { ID2P(LANG_MP3BUFFER_MARGIN), buffer_margin }, - { ID2P(LANG_FADE_ON_STOP), set_fade_on_stop }, + { ID2P(LANG_FADE), fade_mode }, { ID2P(LANG_ID3_ORDER), id3_order }, }; --- ./apps/tree.c.orig 2004-12-21 14:35:02.000000000 +0100 +++ ./apps/tree.c 2005-01-03 11:53:06.131248000 +0100 @@ -1102,9 +1102,13 @@ else { int seed = current_tick; bool play = false; + bool played = (mpeg_status() & MPEG_STATUS_PLAY); int start_index=0; + if ( ((global_settings.fade_mode & FADE_ON_NP) == FADE_ON_NP) && played ) + fade(0); lcd_stop_scroll(); + switch ( file->attr & TREE_ATTR_MASK ) { case TREE_ATTR_M3U: if (bookmark_autoload(buf)) --- ./apps/wps.c.orig 2004-12-21 14:35:02.000000000 +0100 +++ ./apps/wps.c 2005-01-03 11:53:06.171305600 +0100 @@ -363,7 +363,7 @@ return retcode; } -static void fade(bool fade_in) +void fade(bool fade_in) { if (fade_in) { /* fade in */ @@ -576,7 +576,7 @@ if ( paused ) { paused = false; - if ( global_settings.fade_on_stop ) + if ( (global_settings.fade_mode & FADE_ON_STOP) == FADE_ON_STOP ) fade(1); else mpeg_resume(); @@ -584,7 +584,7 @@ else { paused = true; - if ( global_settings.fade_on_stop ) + if ( (global_settings.fade_mode & FADE_ON_STOP) == FADE_ON_STOP ) fade(0); else mpeg_pause(); @@ -646,14 +646,22 @@ mpeg_prev(); } else { - if (!paused) + if (!paused) { + if ( (global_settings.fade_mode & FADE_ON_NP) == FADE_ON_NP ) + fade(0); + else mpeg_pause(); + } mpeg_ff_rewind(0); - if (!paused) + if (!paused) { + if ( (global_settings.fade_mode & FADE_ON_NP) == FADE_ON_NP ) + fade(1); + else mpeg_resume(); } + } break; /* next */ @@ -665,7 +673,11 @@ #ifdef WPS_RC_NEXT case WPS_RC_NEXT: #endif + if ( (global_settings.fade_mode & FADE_ON_NP) == FADE_ON_NP ) + fade(0); mpeg_next(); + if ( (global_settings.fade_mode & FADE_ON_NP) == FADE_ON_NP ) + fade(1); break; /* menu key functions */ @@ -765,7 +777,7 @@ status_set_record(false); status_set_audio(false); #endif - if (global_settings.fade_on_stop) + if ( (global_settings.fade_mode & FADE_ON_STOP) == FADE_ON_STOP ) fade(0); lcd_stop_scroll(); --- ./apps/wps.h.orig 2004-09-29 00:13:26.000000000 +0200 +++ ./apps/wps.h 2005-01-03 11:53:06.201348800 +0100 @@ -27,6 +27,7 @@ int wps_show(void); bool refresh_wps(bool refresh_scroll); void handle_usb(void); +void fade(bool fade_in); #if CONFIG_KEYPAD == RECORDER_PAD bool f2_screen(void); --- ./docs/CUSTOM_CFG_FORMAT.orig 2003-03-10 15:07:34.000000000 +0100 +++ ./docs/CUSTOM_CFG_FORMAT 2005-01-03 11:53:06.361579200 +0100 @@ -28,7 +28,7 @@ scan min step (1, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 45, 60) [seconds] scan accel (0 - 15) [double scan speed every X seconds] antiskip (0 - 7) [seconds] -volume fade (on, off) +volume fade (off, on_stop, on_np, all) sort case (on, off) show files (all, supported, music, playlists)