--- ./apps/lang/english.lang.orig 2004-10-24 04:52:19.000000000 +0200 +++ ./apps/lang/english.lang 2004-11-17 11:25:20.036750400 +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/lang/francais.lang.orig 2004-10-26 14:39:17.000000000 +0200 +++ ./apps/lang/francais.lang 2004-11-17 16:42:10.021766400 +0100 @@ -2810,3 +2820,21 @@ desc: spoken only, for spelling, a split second of silence (difficult to author) eng: "" new: + +id: LANG_FADE +desc: options menu to set fade mode +eng: "Volume fade" +voice: "" +new: "Effets de fondu" + +id: LANG_FADE_ON_NP +desc: fade on next/previous +eng: "on Next/Previous" +voice: "" +new: "Suiv/Préc" + +id: LANG_FADE_ALL +desc: fade on all events +eng: "All events" +voice: "All" +new: "Tous" --- ./apps/settings.c.orig 2004-10-15 22:30:29.000000000 +0200 +++ ./apps/settings.c 2004-11-17 11:16:49.102062400 +0100 @@ -260,7 +260,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-10-24 23:45:37.000000000 +0200 +++ ./apps/settings.h 2004-11-17 11:16:49.132105600 +0100 @@ -237,7 +237,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 @@ -349,4 +349,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-10-21 20:34:48.000000000 +0200 +++ ./apps/settings_menu.c 2004-11-17 11:16:49.172163200 +0100 @@ -459,6 +459,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 ); @@ -846,12 +859,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[] = { @@ -1017,7 +1024,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-10-25 01:19:13.000000000 +0200 +++ ./apps/tree.c 2004-11-17 11:16:49.212220800 +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-10-24 22:27:33.000000000 +0200 +++ ./apps/wps.c 2004-11-17 11:16:49.252278400 +0100 @@ -347,7 +347,7 @@ return retcode; } -static void fade(bool fade_in) +void fade(bool fade_in) { if (fade_in) { /* fade in */ @@ -560,7 +560,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(); @@ -568,7 +568,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(); @@ -630,14 +630,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 */ @@ -649,7 +657,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 */ @@ -749,7 +761,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 2004-11-17 11:16:49.282321600 +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 2004-11-17 11:16:49.402494400 +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)