Index: apps/action.h =================================================================== --- apps/action.h (Revision 21915) +++ apps/action.h (Arbeitskopie) @@ -209,6 +209,7 @@ ACTION_PS_NUDGE_LEFTOFF, ACTION_PS_NUDGE_RIGHTOFF, ACTION_PS_TOGGLE_MODE, + ACTION_PS_TOGGLE_MODE_BACK, ACTION_PS_RESET, ACTION_PS_EXIT, /* _STD_* isnt going to work here */ ACTION_PS_SLOWER, Index: apps/gui/pitchscreen.c =================================================================== --- apps/gui/pitchscreen.c (Revision 21915) +++ apps/gui/pitchscreen.c (Arbeitskopie) @@ -575,6 +575,30 @@ return new_semitone; } +static void toggle_pitch_mode( +#if CONFIG_CODEC == SWCODEC + bool forth, int32_t *pitch, int32_t *speed +#endif + ) +{ + global_settings.pitch_mode_semitone = !global_settings.pitch_mode_semitone; + +#if CONFIG_CODEC == SWCODEC + if (dsp_timestretch_available() && (global_settings.pitch_mode_semitone ^ forth)) + { + global_settings.pitch_mode_timestretch = !global_settings.pitch_mode_timestretch; + if(!global_settings.pitch_mode_timestretch) + { + /* no longer in timestretch mode. Reset speed */ + *speed = *pitch; + dsp_set_timestretch(PITCH_SPEED_100); + } + } + settings_save(); +#endif +} + + /* returns: 0 on exit @@ -803,21 +827,19 @@ break; case ACTION_PS_TOGGLE_MODE: - global_settings.pitch_mode_semitone = !global_settings.pitch_mode_semitone; + toggle_pitch_mode( #if CONFIG_CODEC == SWCODEC + true, &pitch, &speed +#endif + ); + break; - if (dsp_timestretch_available() && !global_settings.pitch_mode_semitone) - { - global_settings.pitch_mode_timestretch = !global_settings.pitch_mode_timestretch; - if(!global_settings.pitch_mode_timestretch) - { - /* no longer in timestretch mode. Reset speed */ - speed = pitch; - dsp_set_timestretch(PITCH_SPEED_100); - } - } - settings_save(); -#endif + case ACTION_PS_TOGGLE_MODE_BACK: + toggle_pitch_mode( +#if CONFIG_CODEC == SWCODEC + false, &pitch, &speed +#endif + ); break; case ACTION_PS_EXIT: Index: apps/keymaps/keymap-m3.c =================================================================== --- apps/keymaps/keymap-m3.c (Revision 21915) +++ apps/keymaps/keymap-m3.c (Arbeitskopie) @@ -159,7 +159,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MODE, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MODE|BUTTON_REL, BUTTON_MODE }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, { ACTION_PS_RESET, BUTTON_REC, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, @@ -177,7 +178,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_RC_REW|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RC_FF, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RC_FF|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_RC_MODE, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, { ACTION_PS_RESET, BUTTON_RC_REC, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_RC_PLAY, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-h1x0_h3x0.c =================================================================== --- apps/keymaps/keymap-h1x0_h3x0.c (Revision 21915) +++ apps/keymaps/keymap-h1x0_h3x0.c (Arbeitskopie) @@ -226,7 +226,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MODE, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MODE|BUTTON_REL, BUTTON_MODE }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_ON, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, Index: apps/keymaps/keymap-gigabeat-s.c =================================================================== --- apps/keymaps/keymap-gigabeat-s.c (Revision 21915) +++ apps/keymaps/keymap-gigabeat-s.c (Arbeitskopie) @@ -249,7 +249,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MENU|BUTTON_REPEAT,BUTTON_MENU }, { ACTION_PS_RESET, BUTTON_PLAY, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_BACK, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-gigabeat.c =================================================================== --- apps/keymaps/keymap-gigabeat.c (Revision 21915) +++ apps/keymaps/keymap-gigabeat.c (Arbeitskopie) @@ -237,7 +237,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_PS_RESET, BUTTON_A, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-c200.c =================================================================== --- apps/keymaps/keymap-c200.c (Revision 21915) +++ apps/keymaps/keymap-c200.c (Arbeitskopie) @@ -182,7 +182,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_REC, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_REC|BUTTON_REL, BUTTON_REC }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-recorder.c =================================================================== --- apps/keymaps/keymap-recorder.c (Revision 21915) +++ apps/keymaps/keymap-recorder.c (Arbeitskopie) @@ -158,7 +158,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_F1|BUTTON_REPEAT, BUTTON_F1 }, { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, Index: apps/keymaps/keymap-e200.c =================================================================== --- apps/keymaps/keymap-e200.c (Revision 21915) +++ apps/keymaps/keymap-e200.c (Arbeitskopie) @@ -199,7 +199,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_REC, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_REC|BUTTON_REL, BUTTON_REC }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_UP, BUTTON_NONE }, Index: apps/keymaps/keymap-clip.c =================================================================== --- apps/keymaps/keymap-clip.c (Revision 21915) +++ apps/keymaps/keymap-clip.c (Arbeitskopie) @@ -196,6 +196,7 @@ { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_TOGGLE_MODE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-av300.c =================================================================== --- apps/keymaps/keymap-av300.c (Revision 21915) +++ apps/keymaps/keymap-av300.c (Arbeitskopie) @@ -156,7 +156,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_F1|BUTTON_REPEAT, BUTTON_F1 }, { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-ipod.c =================================================================== --- apps/keymaps/keymap-ipod.c (Revision 21915) +++ apps/keymaps/keymap-ipod.c (Arbeitskopie) @@ -143,7 +143,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-x5.c =================================================================== --- apps/keymaps/keymap-x5.c (Revision 21915) +++ apps/keymaps/keymap-x5.c (Arbeitskopie) @@ -162,7 +162,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_SELECT, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT }, { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, @@ -180,7 +181,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_RC_REW|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RC_FF, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RC_FF|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_RC_MODE, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, { ACTION_PS_RESET, BUTTON_RC_REC, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_RC_PLAY, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-mr100.c =================================================================== --- apps/keymaps/keymap-mr100.c (Revision 21915) +++ apps/keymaps/keymap-mr100.c (Arbeitskopie) @@ -234,7 +234,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_PS_RESET, BUTTON_DISPLAY, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-meizu-m6sl.c =================================================================== --- apps/keymaps/keymap-meizu-m6sl.c (Revision 21915) +++ apps/keymaps/keymap-meizu-m6sl.c (Arbeitskopie) @@ -224,7 +224,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_PS_RESET, BUTTON_PLAY, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, Index: apps/keymaps/keymap-fuze.c =================================================================== --- apps/keymaps/keymap-fuze.c (Revision 21915) +++ apps/keymaps/keymap-fuze.c (Arbeitskopie) @@ -199,7 +199,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_HOME|BUTTON_REL, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_UP, BUTTON_NONE }, Index: apps/keymaps/keymap-hdd1630.c =================================================================== --- apps/keymaps/keymap-hdd1630.c (Revision 21915) +++ apps/keymaps/keymap-hdd1630.c (Arbeitskopie) @@ -237,7 +237,8 @@ { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, - { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, + { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, + { ACTION_PS_TOGGLE_MODE_BACK,BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_PS_RESET, BUTTON_VIEW, BUTTON_NONE }, { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },