summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoshe Piekarski <dev.rockbox@melachim.net>2021-10-31 02:56:46 -0400
committerMoshe Piekarski <dev.rockbox@melachim.net>2021-11-05 09:20:04 -0400
commit13ac48562544eada909ee39a63d5b87afe51b219 (patch)
treeef8440cca0535d2a15eb3b9e764095345c7ce7b7
parent22c2e0a7c2be5bdc4a8ca0662c561454f5fb623a (diff)
downloadrockbox-13ac48562544eada909ee39a63d5b87afe51b219.tar.gz
rockbox-13ac48562544eada909ee39a63d5b87afe51b219.zip
Add single playback mode
(FS#482) Change-Id: I8b4c3e4ffb6975122153e82f2b9848c382195163
-rw-r--r--apps/lang/english-us.lang14
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/lang/hebrew.lang14
-rw-r--r--apps/menus/playback_menu.c3
-rw-r--r--apps/pcmbuf.c3
-rw-r--r--apps/playback.c8
-rw-r--r--apps/settings.h1
-rw-r--r--apps/settings_list.c1
-rw-r--r--manual/configure_rockbox/playback_options.tex5
9 files changed, 62 insertions, 1 deletions
diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang
index 618ee114fd..6fac22c381 100644
--- a/apps/lang/english-us.lang
+++ b/apps/lang/english-us.lang
@@ -1300,6 +1300,20 @@
1300 </voice> 1300 </voice>
1301</phrase> 1301</phrase>
1302<phrase> 1302<phrase>
1303 id: LANG_SINGLE_MODE
1304 desc: single mode
1305 user: core
1306 <source>
1307 *: "Single Mode"
1308 </source>
1309 <dest>
1310 *: "Single Mode"
1311 </dest>
1312 <voice>
1313 *: "Single Mode"
1314 </voice>
1315</phrase>
1316<phrase>
1303 id: LANG_PARTY_MODE 1317 id: LANG_PARTY_MODE
1304 desc: party mode 1318 desc: party mode
1305 user: core 1319 user: core
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index dab9ed8508..69542b6627 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1376,6 +1376,20 @@
1376 </voice> 1376 </voice>
1377</phrase> 1377</phrase>
1378<phrase> 1378<phrase>
1379 id: LANG_SINGLE_MODE
1380 desc: single mode
1381 user: core
1382 <source>
1383 *: "Single Mode"
1384 </source>
1385 <dest>
1386 *: "Single Mode"
1387 </dest>
1388 <voice>
1389 *: "Single Mode"
1390 </voice>
1391</phrase>
1392<phrase>
1379 id: LANG_PARTY_MODE 1393 id: LANG_PARTY_MODE
1380 desc: party mode 1394 desc: party mode
1381 user: core 1395 user: core
diff --git a/apps/lang/hebrew.lang b/apps/lang/hebrew.lang
index 2f732f0eef..d4da2443b8 100644
--- a/apps/lang/hebrew.lang
+++ b/apps/lang/hebrew.lang
@@ -1461,6 +1461,20 @@
1461 </voice> 1461 </voice>
1462</phrase> 1462</phrase>
1463<phrase> 1463<phrase>
1464 id: LANG_SINGLE_MODE
1465 desc: single mode
1466 user: core
1467 <source>
1468 *: "Single Mode"
1469 </source>
1470 <dest>
1471 *: "מצב יחדי"
1472 </dest>
1473 <voice>
1474 *: "מצב יחדי"
1475 </voice>
1476</phrase>
1477<phrase>
1464 id: LANG_PARTY_MODE 1478 id: LANG_PARTY_MODE
1465 desc: party mode 1479 desc: party mode
1466 user: core 1480 user: core
diff --git a/apps/menus/playback_menu.c b/apps/menus/playback_menu.c
index 41c738725c..5f9479fae3 100644
--- a/apps/menus/playback_menu.c
+++ b/apps/menus/playback_menu.c
@@ -92,6 +92,7 @@ MENUITEM_SETTING(buffer_margin, &global_settings.buffer_margin,
92 buffermargin_callback); 92 buffermargin_callback);
93#endif /*HAVE_DISK_STORAGE */ 93#endif /*HAVE_DISK_STORAGE */
94MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL); 94MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL);
95MENUITEM_SETTING(single_mode, &global_settings.single_mode, NULL);
95MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL); 96MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL);
96 97
97#ifdef HAVE_CROSSFADE 98#ifdef HAVE_CROSSFADE
@@ -208,7 +209,7 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
208#ifdef HAVE_DISK_STORAGE 209#ifdef HAVE_DISK_STORAGE
209 &buffer_margin, 210 &buffer_margin,
210#endif 211#endif
211 &fade_on_stop, &party_mode, 212 &fade_on_stop, &single_mode, &party_mode,
212 213
213#if defined(HAVE_CROSSFADE) 214#if defined(HAVE_CROSSFADE)
214 &crossfade_settings_menu, 215 &crossfade_settings_menu,
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c
index 773e97cce0..c4164c3b4b 100644
--- a/apps/pcmbuf.c
+++ b/apps/pcmbuf.c
@@ -741,6 +741,9 @@ void pcmbuf_start_track_change(enum pcm_track_change_type type)
741 } 741 }
742 } 742 }
743 743
744 if (auto_skip && global_settings.single_mode && !global_settings.party_mode)
745 crossfade = false;
746
744 if (crossfade) 747 if (crossfade)
745 { 748 {
746 logf("crossfade track change"); 749 logf("crossfade track change");
diff --git a/apps/playback.c b/apps/playback.c
index 5a6f18735b..1c5a7a4c9d 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2396,6 +2396,14 @@ static void audio_finalise_track_change(void)
2396 2396
2397 id3_write(PLAYING_ID3, track_id3); 2397 id3_write(PLAYING_ID3, track_id3);
2398 2398
2399 if (global_settings.single_mode)
2400 if ( ((skip_pending == TRACK_SKIP_AUTO) || (skip_pending == TRACK_SKIP_AUTO_NEW_PLAYLIST))
2401 && (global_settings.party_mode == 0) )
2402 {
2403 play_status = PLAY_PAUSED;
2404 pcmbuf_pause(true);
2405 }
2406
2399 /* The skip is technically over */ 2407 /* The skip is technically over */
2400 skip_pending = TRACK_SKIP_NONE; 2408 skip_pending = TRACK_SKIP_NONE;
2401 2409
diff --git a/apps/settings.h b/apps/settings.h
index fedec8e025..9b4c56467d 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -476,6 +476,7 @@ struct user_settings
476 int default_codepage; /* set default codepage for tag conversion */ 476 int default_codepage; /* set default codepage for tag conversion */
477 bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ 477 bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */
478 bool play_selected; /* Plays selected file even in shuffle mode */ 478 bool play_selected; /* Plays selected file even in shuffle mode */
479 bool single_mode; /* single mode - stop after every track */
479 bool party_mode; /* party mode - unstoppable music */ 480 bool party_mode; /* party mode - unstoppable music */
480 bool audioscrobbler; /* Audioscrobbler logging */ 481 bool audioscrobbler; /* Audioscrobbler logging */
481 bool cuesheet; 482 bool cuesheet;
diff --git a/apps/settings_list.c b/apps/settings_list.c
index d9ffd8cf3e..4758c27113 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1238,6 +1238,7 @@ const struct settings_list settings[] = {
1238#endif 1238#endif
1239 /* more playback */ 1239 /* more playback */
1240 OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL), 1240 OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL),
1241 OFFON_SETTING(0,single_mode,LANG_SINGLE_MODE,false,"single mode",NULL),
1241 OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL), 1242 OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL),
1242 OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL), 1243 OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL),
1243 INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1, 1244 INT_SETTING(F_TIME_SETTING, ff_rewind_min_step, LANG_FFRW_STEP, 1,
diff --git a/manual/configure_rockbox/playback_options.tex b/manual/configure_rockbox/playback_options.tex
index 7ddd3c6907..aa2cfff1d5 100644
--- a/manual/configure_rockbox/playback_options.tex
+++ b/manual/configure_rockbox/playback_options.tex
@@ -82,6 +82,11 @@ you to configure settings related to audio playback.
82 set to \setting{Yes}, your music will fade out when you stop or pause 82 set to \setting{Yes}, your music will fade out when you stop or pause
83 playback, and fade in when you resume playback. 83 playback, and fade in when you resume playback.
84 84
85\section{Single Mode}
86 If the Single Mode option is set to \setting{Yes}, your music
87 will pause at every automatic track change. Crossfade on track
88 change will be ignored if this setting is enabled.
89
85\section{Party Mode} 90\section{Party Mode}
86 Enables unstoppable music playback. When new songs are 91 Enables unstoppable music playback. When new songs are
87 selected, they are queued at the end of the current dynamic playlist 92 selected, they are queued at the end of the current dynamic playlist