Add single playback mode

(FS#482)

Change-Id: I8b4c3e4ffb6975122153e82f2b9848c382195163
This commit is contained in:
Moshe Piekarski 2021-10-31 02:56:46 -04:00
parent 22c2e0a7c2
commit 13ac485625
9 changed files with 62 additions and 1 deletions

View file

@ -1299,6 +1299,20 @@
*: "Fade On Stop and Pause" *: "Fade On Stop and Pause"
</voice> </voice>
</phrase> </phrase>
<phrase>
id: LANG_SINGLE_MODE
desc: single mode
user: core
<source>
*: "Single Mode"
</source>
<dest>
*: "Single Mode"
</dest>
<voice>
*: "Single Mode"
</voice>
</phrase>
<phrase> <phrase>
id: LANG_PARTY_MODE id: LANG_PARTY_MODE
desc: party mode desc: party mode

View file

@ -1375,6 +1375,20 @@
*: "Fade On Stop and Pause" *: "Fade On Stop and Pause"
</voice> </voice>
</phrase> </phrase>
<phrase>
id: LANG_SINGLE_MODE
desc: single mode
user: core
<source>
*: "Single Mode"
</source>
<dest>
*: "Single Mode"
</dest>
<voice>
*: "Single Mode"
</voice>
</phrase>
<phrase> <phrase>
id: LANG_PARTY_MODE id: LANG_PARTY_MODE
desc: party mode desc: party mode

View file

@ -1460,6 +1460,20 @@
*: "עמעום צליל בעצירה והפסקה" *: "עמעום צליל בעצירה והפסקה"
</voice> </voice>
</phrase> </phrase>
<phrase>
id: LANG_SINGLE_MODE
desc: single mode
user: core
<source>
*: "Single Mode"
</source>
<dest>
*: "מצב יחדי"
</dest>
<voice>
*: "מצב יחדי"
</voice>
</phrase>
<phrase> <phrase>
id: LANG_PARTY_MODE id: LANG_PARTY_MODE
desc: party mode desc: party mode

View file

@ -92,6 +92,7 @@ MENUITEM_SETTING(buffer_margin, &global_settings.buffer_margin,
buffermargin_callback); buffermargin_callback);
#endif /*HAVE_DISK_STORAGE */ #endif /*HAVE_DISK_STORAGE */
MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL); MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL);
MENUITEM_SETTING(single_mode, &global_settings.single_mode, NULL);
MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL); MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL);
#ifdef HAVE_CROSSFADE #ifdef HAVE_CROSSFADE
@ -208,7 +209,7 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
#ifdef HAVE_DISK_STORAGE #ifdef HAVE_DISK_STORAGE
&buffer_margin, &buffer_margin,
#endif #endif
&fade_on_stop, &party_mode, &fade_on_stop, &single_mode, &party_mode,
#if defined(HAVE_CROSSFADE) #if defined(HAVE_CROSSFADE)
&crossfade_settings_menu, &crossfade_settings_menu,

View file

@ -741,6 +741,9 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type)
} }
} }
if (auto_skip && global_settings.single_mode && !global_settings.party_mode)
crossfade = false;
if (crossfade) if (crossfade)
{ {
logf("crossfade track change"); logf("crossfade track change");

View file

@ -2396,6 +2396,14 @@ static void audio_finalise_track_change(void)
id3_write(PLAYING_ID3, track_id3); id3_write(PLAYING_ID3, track_id3);
if (global_settings.single_mode)
if ( ((skip_pending == TRACK_SKIP_AUTO) || (skip_pending == TRACK_SKIP_AUTO_NEW_PLAYLIST))
&& (global_settings.party_mode == 0) )
{
play_status = PLAY_PAUSED;
pcmbuf_pause(true);
}
/* The skip is technically over */ /* The skip is technically over */
skip_pending = TRACK_SKIP_NONE; skip_pending = TRACK_SKIP_NONE;

View file

@ -476,6 +476,7 @@ struct user_settings
int default_codepage; /* set default codepage for tag conversion */ int default_codepage; /* set default codepage for tag conversion */
bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */
bool play_selected; /* Plays selected file even in shuffle mode */ bool play_selected; /* Plays selected file even in shuffle mode */
bool single_mode; /* single mode - stop after every track */
bool party_mode; /* party mode - unstoppable music */ bool party_mode; /* party mode - unstoppable music */
bool audioscrobbler; /* Audioscrobbler logging */ bool audioscrobbler; /* Audioscrobbler logging */
bool cuesheet; bool cuesheet;

View file

@ -1238,6 +1238,7 @@ const struct settings_list settings[] = {
#endif #endif
/* more playback */ /* more playback */
OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL), OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL),
OFFON_SETTING(0,single_mode,LANG_SINGLE_MODE,false,"single mode",NULL),
OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL), OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL),
OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL), OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL),
INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1, INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1,

View file

@ -82,6 +82,11 @@ you to configure settings related to audio playback.
set to \setting{Yes}, your music will fade out when you stop or pause set to \setting{Yes}, your music will fade out when you stop or pause
playback, and fade in when you resume playback. playback, and fade in when you resume playback.
\section{Single Mode}
If the Single Mode option is set to \setting{Yes}, your music
will pause at every automatic track change. Crossfade on track
change will be ignored if this setting is enabled.
\section{Party Mode} \section{Party Mode}
Enables unstoppable music playback. When new songs are Enables unstoppable music playback. When new songs are
selected, they are queued at the end of the current dynamic playlist selected, they are queued at the end of the current dynamic playlist