{"id":1409,"date":"2024-09-23T14:22:14","date_gmt":"2024-09-23T11:22:14","guid":{"rendered":"https:\/\/www.aimp.ru\/blogs\/?p=1409"},"modified":"2024-09-23T14:22:14","modified_gmt":"2024-09-23T11:22:14","slug":"","status":"publish","type":"post","link":"https:\/\/aimp.ru\/blogs\/?p=1409&language=en","title":{"rendered":"Tutorial: \"Random playback\"","raw":"Tutorial: \"Random playback\""},"content":{"rendered":"\n<p>Sometime users asks us about AIMP&#8217;s random playback mode. In this article, I want to talk about our random playback implementation that used in modern version of AIMP for all supported platforms. Let&#8217;s go.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Random queue is not random<\/strong><\/h2>\n\n\n\n<p>At first time, it may seems that random playback mode is so simple to implement, just take a random file from the playlist and play it next. However, you must take into account that random number generator may produce repetitions of one numbers and not produce others numbers at all. This means that some tracks will be played several times, while others will not be played even once.  So, what why AIMP uses pseudo-random queue for random playback. <\/p>\n\n\n\n<p><strong>Building the queue<\/strong><\/p>\n\n\n\n<p>When you activates the &#8220;shuffle mode&#8221;, app creates a shadow copy of playing playlist (hidden from user), shuffles it and starts playing. The shuffle procedure uses a random number generator whose values are used here as indexes of items to swap.<\/p>\n\n\n\n<p>This approach resolves following issues:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>All tracks will be played once<\/li>\n\n\n\n<li>Code become simpler &#8211; app operates with playlists only, plays it from beginning to end<\/li>\n\n\n\n<li>We know exactly when the playlist ends<br>to jump to next playlist or execute scheduled action<\/li>\n\n\n\n<li>Navigation forward\/backward through playback history is available<\/li>\n<\/ul>\n\n\n\n<p>In AIMP for PC, you can view a state of random playback queue, to do this you need<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\"> (when app is closed)<\/mark> to add the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">DebugShowPlaybackQueueStatus=1<\/mark> pair to the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">[Playlist.Manager]<\/mark> section of <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP.ini<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(located in the &#8220;profile folder&#8221;)<\/mark>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"362\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\" alt=\"\" class=\"wp-image-1414\" srcset=\"https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png 231w, https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle-191x300.png 191w\" sizes=\"auto, (max-width: 231px) 100vw, 231px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>As you can see, second line of each item now contains an additional information: first number is index of the item in random playback queue, second number (in brackets) is index of currently playing item.<\/p>\n\n\n\n<p>In the example, first track will be played 24th in order (23rd, if we count from 0), second track is 10th. <\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"update\"><strong>Updating the Queue<\/strong><\/h2>\n\n\n\n<p><strong>Adding the tracks<\/strong><\/p>\n\n\n\n<p>When you adding new tracks to playlist, the tracks will be added to random playback queue automatically, in random order of course, but strictly <span style=\"text-decoration: underline;\">after<\/span> currently playing track. So, you will definitely hear the just added tracks before playlist end.<\/p>\n\n\n\n<p><strong>Start track playback manually<\/strong><\/p>\n\n\n\n<p>In case, when user intervenes to playback queue, starting another track manually, the track will be moved in the queue to place of next item (after currently playing), regardless of where it was before:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"191\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\" alt=\"\" class=\"wp-image-1415\" srcset=\"https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png 458w, https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02-300x125.png 300w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>In the example, I&#8217;ve started the 4th track, and it index was changed from 37th to 1st. The track has been inserted to 1st place and shifted all other tracks in the queue <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(1st and 2nd tracks has increased their indexes by 1)<\/mark>.<\/p>\n\n\n\n<p><strong>Restart the app<\/strong><\/p>\n\n\n\n<p>Playback queue stores to playlist file (AIMPPL4 and XSPF file formats). So, restarting the app will <span style=\"text-decoration: underline;\">not<\/span> reset playback history and you will able to resume playback after restarting without recreating the queue.<\/p>\n\n\n\n<p><strong>Switching the mode<\/strong><\/p>\n\n\n\n<p>Switching between playback mode (normal \/ shuffle) leads the queue to be recreated! It means, that playback history of the randomly played playlist will be lost, and you will start the playlist playing at next time from beginning.<\/p>\n\n\n\n<p>Usually, its happens when user temporary switches to another playlist where shuffle mode is not needed, and turns off the shuffle mode. To avoid playback queue from reset in this case, we recommends to switch on the &#8220;<span style=\"text-decoration: underline;\">each playlist has its own playback mode<\/span>&#8221; option:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>v5.30 for PC: &#8220;settings \\ player \\ automatic \\ playback&#8221;<\/li>\n\n\n\n<li>v5.11 for PC: &#8220;settings \\ player \\ automatic&#8221;<\/li>\n\n\n\n<li>v4.05 for Android: &#8220;settings \\ playback \\ navigation&#8221;<\/li>\n<\/ul>\n\n\n\n<p><strong>End of Playlist<\/strong><\/p>\n\n\n\n<p>Random playback queue will be <span style=\"text-decoration: underline;\">recreated<\/span> automatically on repeat the playlist after it has finished.<\/p>\n\n\n\n<p>Sometimes, it may seem that the app start to repeat tracks. Usually it associated with repeating a playlist. The playlist has ended, the player has rebuilt the queue and started playing the playlist from the beginning. However, the tracks that you just recently heard now are at the top of the queue, and therefore the consciousness focuses on this.<\/p>\n\n\n\n<p><strong>Sorting, Removing<\/strong><\/p>\n\n\n\n<p>and all other playlist operations does not affect to random playback queue.<\/p>\n","protected":false,"raw":"<!-- wp:paragraph -->\n<p>Sometime users asks us about AIMP's random playback mode. In this article, I want to talk about our random playback implementation that used in modern version of AIMP for all supported platforms. Let's go.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Random queue is not random<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>At first time, it may seems that random playback mode is so simple to implement, just take a random file from the playlist and play it next. However, you must take into account that random number generator may produce repetitions of one numbers and not produce others numbers at all. This means that some tracks will be played several times, while others will not be played even once.  So, what why AIMP uses pseudo-random queue for random playback. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Building the queue<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When you activates the \"shuffle mode\", app creates a shadow copy of playing playlist (hidden from user), shuffles it and starts playing. The shuffle procedure uses a random number generator whose values are used here as indexes of items to swap.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This approach resolves following issues:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><!-- wp:list-item -->\n<li>All tracks will be played once<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Code become simpler - app operates with playlists only, plays it from beginning to end<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>We know exactly when the playlist ends<br>to jump to next playlist or execute scheduled action<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Navigation forward\/backward through playback history is available<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>In AIMP for PC, you can view a state of random playback queue, to do this you need<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\"> (when app is closed)<\/mark> to add the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">DebugShowPlaybackQueueStatus=1<\/mark> pair to the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">[Playlist.Manager]<\/mark> section of <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP.ini<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(located in the \"profile folder\")<\/mark>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1414,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\" alt=\"\" class=\"wp-image-1414\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>As you can see, second line of each item now contains an additional information: first number is index of the item in random playback queue, second number (in brackets) is index of currently playing item.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In the example, first track will be played 24th in order (23rd, if we count from 0), second track is 10th. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"update\"><strong>Updating the Queue<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>Adding the tracks<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When you adding new tracks to playlist, the tracks will be added to random playback queue automatically, in random order of course, but strictly <span style=\"text-decoration: underline;\">after<\/span> currently playing track. So, you will definitely hear the just added tracks before playlist end.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Start track playback manually<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In case, when user intervenes to playback queue, starting another track manually, the track will be moved in the queue to place of next item (after currently playing), regardless of where it was before:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1415,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\" alt=\"\" class=\"wp-image-1415\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>In the example, I've started the 4th track, and it index was changed from 37th to 1st. The track has been inserted to 1st place and shifted all other tracks in the queue <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(1st and 2nd tracks has increased their indexes by 1)<\/mark>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Restart the app<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Playback queue stores to playlist file (AIMPPL4 and XSPF file formats). So, restarting the app will <span style=\"text-decoration: underline;\">not<\/span> reset playback history and you will able to resume playback after restarting without recreating the queue.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Switching the mode<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Switching between playback mode (normal \/ shuffle) leads the queue to be recreated! It means, that playback history of the randomly played playlist will be lost, and you will start the playlist playing at next time from beginning.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Usually, its happens when user temporary switches to another playlist where shuffle mode is not needed, and turns off the shuffle mode. To avoid playback queue from reset in this case, we recommends to switch on the \"<span style=\"text-decoration: underline;\">each playlist has its own playback mode<\/span>\" option:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><!-- wp:list-item -->\n<li>v5.30 for PC: \"settings \\ player \\ automatic \\ playback\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v5.11 for PC: \"settings \\ player \\ automatic\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v4.05 for Android: \"settings \\ playback \\ navigation\"<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>End of Playlist<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Random playback queue will be <span style=\"text-decoration: underline;\">recreated<\/span> automatically on repeat the playlist after it has finished.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Sometimes, it may seem that the app start to repeat tracks. Usually it associated with repeating a playlist. The playlist has ended, the player has rebuilt the queue and started playing the playlist from the beginning. However, the tracks that you just recently heard now are at the top of the queue, and therefore the consciousness focuses on this.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Sorting, Removing<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>and all other playlist operations does not affect to random playback queue.<\/p>\n<!-- \/wp:paragraph -->"},"excerpt":{"rendered":"","protected":false,"raw":""},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_ru_post_content":"<!-- wp:paragraph -->\n<p>\u041d\u0430\u043c \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u044e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0440\u0435\u0436\u0438\u043c\u0443 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \"\u0432\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\". \u0412 \u044d\u0442\u043e\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0435 \u044f \u0445\u043e\u0447\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 AIMP \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043b\u0435\u0433\u043a\u043e - \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0437 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0438 \u0432\u0441\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044b \u043e\u0434\u043d\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u043d\u0438 \u0442\u0440\u0435\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 - \u043d\u0438 \u0440\u0430\u0437\u0443. \u0414\u0430\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0432 AIMP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \"\u0432\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\", \u043f\u043b\u0435\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0442\u0435\u043d\u0435\u0432\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 (\u043d\u0435 \u0432\u0438\u0434\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e), \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435. \u0421\u0430\u043c\u043e \u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0447\u044c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>\u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u0440\u0435\u043a\u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u0443<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\u041f\u0440\u043e\u0449\u0435 \u043a\u043e\u0434 - \u043f\u043b\u0435\u0435\u0440 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0433\u0440\u0430\u0435\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442, \u043e\u0442 \u0435\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\u0422\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 <br>\u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u043f\u0435\u0440\u0435\u0434\/\u043d\u0430\u0437\u0430\u0434<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u0412 AIMP \u0434\u043b\u044f \u041f\u041a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043f\u043b\u0435\u0435\u0440\u0435 \u0432 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP.ini<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(\u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f)<\/mark> \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">[Playlist.Manager]<\/mark> \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u044e\u0447 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">DebugShowPlaybackQueueStatus=1<\/mark> :<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1414,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\" alt=\"\" class=\"wp-image-1414\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f: \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0432\u0442\u043e\u0440\u043e\u0435 (\u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445) - \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0440\u0435\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043d 24-\u044b\u043c \u043f\u043e \u0441\u0447\u0435\u0442\u0443 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(23-\u043c, \u0435\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441 0)<\/mark>, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 - 10-\u044b\u043c. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"update\"><strong>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u043e\u0432<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0435\u043a\u0438 \u0432 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442, \u043e\u043d\u0438 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u0447\u0435\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043d\u043e \u0441\u0442\u0440\u043e\u0433\u043e <span style=\"text-decoration: underline;\">\u043f\u043e\u0441\u043b\u0435<\/span> \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u043a\u0438 \u0432\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043b\u044b\u0448\u0438\u0442\u0435 \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0420\u0443\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0440\u0435\u043a\u0430<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0442\u0440\u0435\u043a \u043d\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0442\u0440\u0435\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u043c, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u043e\u043d \u0431\u044b\u043b \u0434\u043e \u044d\u0442\u043e\u0433\u043e:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1415,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\" alt=\"\" class=\"wp-image-1415\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u0440\u0435\u043a \u21164 \u0438 \u0435\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0441 37 \u043d\u0430 1 - \u0442\u0440\u0435\u043a \u0431\u044b\u043b \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0441\u0434\u0432\u0438\u043d\u0443\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u043a\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(\u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u043e\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443)<\/mark>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043b\u0435\u0435\u0440\u0430<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 (\u0444\u043e\u0440\u043c\u0430\u0442\u044b AIMPPL4 \u0438 XSPF), \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043b\u0435\u0435\u0440\u0430 \u0432\u044b \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0441 \u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0421\u043c\u0435\u043d\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \/ \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a <span style=\"text-decoration: underline;\">\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e<\/span> \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0422.\u0435. \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0438  \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \"\u0432\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\" \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u0442\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \"\u0432\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\" \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0438 \u043f\u043e\u0441\u0435\u043c\u0443 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0441\u0431\u0440\u043e\u0441 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u0445, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c <span style=\"text-decoration: underline;\">\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e \"\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0435 \u0441\u0432\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\"<\/span>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>v5.30 \u0434\u043b\u044f \u041f\u041a: \"\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \\ \u043f\u043b\u0435\u0435\u0440 \\ \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0430 \\ \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v5.11 \u0434\u043b\u044f \u041f\u041a: \"\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \\ \u043f\u043b\u0435\u0435\u0440 \\ \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0430\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v4.05 \u0434\u043b\u044f \u0410\u043d\u0434\u0440\u043e\u0438\u0434: \"\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \\ \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \\ \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f\"<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 <span style=\"text-decoration: underline;\">\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0430<\/span> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 <span style=\"text-decoration: underline;\">\u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f<\/span>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \"\u0432\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\" \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0442\u0440\u0435\u043a\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u043e\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 - \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u043f\u043b\u0435\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u043b \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u043d\u0430\u0447\u0430\u043b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0440\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043f\u043e\u0441\u0435\u043c\u0443 \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043e\u0441\u0442\u0440\u044f\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><\/p>\n<!-- \/wp:paragraph -->","_ru_post_name":"%d0%b2%d1%80%d0%b0%d0%b7%d0%bd%d0%be%d0%b1%d0%be%d0%b9","_ru_post_excerpt":"","_ru_post_title":"\u0421\u043f\u0440\u0430\u0432\u043a\u0430: \"\u0412\u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439\"","_en_post_content":"<!-- wp:paragraph -->\n<p>Sometime users asks us about AIMP's random playback mode. In this article, I want to talk about our random playback implementation that used in modern version of AIMP for all supported platforms. Let's go.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Random queue is not random<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>At first time, it may seems that random playback mode is so simple to implement, just take a random file from the playlist and play it next. However, you must take into account that random number generator may produce repetitions of one numbers and not produce others numbers at all. This means that some tracks will be played several times, while others will not be played even once.  So, what why AIMP uses pseudo-random queue for random playback. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Building the queue<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When you activates the \"shuffle mode\", app creates a shadow copy of playing playlist (hidden from user), shuffles it and starts playing. The shuffle procedure uses a random number generator whose values are used here as indexes of items to swap.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This approach resolves following issues:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><!-- wp:list-item -->\n<li>All tracks will be played once<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Code become simpler - app operates with playlists only, plays it from beginning to end<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>We know exactly when the playlist ends<br>to jump to next playlist or execute scheduled action<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Navigation forward\/backward through playback history is available<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>In AIMP for PC, you can view a state of random playback queue, to do this you need<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\"> (when app is closed)<\/mark> to add the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">DebugShowPlaybackQueueStatus=1<\/mark> pair to the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">[Playlist.Manager]<\/mark> section of <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">AIMP.ini<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(located in the \"profile folder\")<\/mark>:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1414,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle.png\" alt=\"\" class=\"wp-image-1414\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>As you can see, second line of each item now contains an additional information: first number is index of the item in random playback queue, second number (in brackets) is index of currently playing item.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In the example, first track will be played 24th in order (23rd, if we count from 0), second track is 10th. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"update\"><strong>Updating the Queue<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>Adding the tracks<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When you adding new tracks to playlist, the tracks will be added to random playback queue automatically, in random order of course, but strictly <span style=\"text-decoration: underline;\">after<\/span> currently playing track. So, you will definitely hear the just added tracks before playlist end.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Start track playback manually<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In case, when user intervenes to playback queue, starting another track manually, the track will be moved in the queue to place of next item (after currently playing), regardless of where it was before:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":1415,\"sizeSlug\":\"full\",\"linkDestination\":\"media\",\"align\":\"center\"} -->\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2023\/11\/shuffle_02.png\" alt=\"\" class=\"wp-image-1415\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>In the example, I've started the 4th track, and it index was changed from 37th to 1st. The track has been inserted to 1st place and shifted all other tracks in the queue <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-medium-gray-color\">(1st and 2nd tracks has increased their indexes by 1)<\/mark>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Restart the app<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Playback queue stores to playlist file (AIMPPL4 and XSPF file formats). So, restarting the app will <span style=\"text-decoration: underline;\">not<\/span> reset playback history and you will able to resume playback after restarting without recreating the queue.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Switching the mode<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Switching between playback mode (normal \/ shuffle) leads the queue to be recreated! It means, that playback history of the randomly played playlist will be lost, and you will start the playlist playing at next time from beginning.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Usually, its happens when user temporary switches to another playlist where shuffle mode is not needed, and turns off the shuffle mode. To avoid playback queue from reset in this case, we recommends to switch on the \"<span style=\"text-decoration: underline;\">each playlist has its own playback mode<\/span>\" option:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><!-- wp:list-item -->\n<li>v5.30 for PC: \"settings \\ player \\ automatic \\ playback\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v5.11 for PC: \"settings \\ player \\ automatic\"<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v4.05 for Android: \"settings \\ playback \\ navigation\"<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>End of Playlist<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Random playback queue will be <span style=\"text-decoration: underline;\">recreated<\/span> automatically on repeat the playlist after it has finished.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Sometimes, it may seem that the app start to repeat tracks. Usually it associated with repeating a playlist. The playlist has ended, the player has rebuilt the queue and started playing the playlist from the beginning. However, the tracks that you just recently heard now are at the top of the queue, and therefore the consciousness focuses on this.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Sorting, Removing<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>and all other playlist operations does not affect to random playback queue.<\/p>\n<!-- \/wp:paragraph -->","_en_post_name":"","_en_post_excerpt":"","_en_post_title":"Tutorial: \"Random playback\"","edit_language":"en","footnotes":""},"categories":[8,3,104],"tags":[75,105,90],"class_list":["post-1409","post","type-post","status-publish","format-standard","hentry","category-aimp-mobile","category-aimp","category-104","tag-android","tag-tutorial","tag-windows"],"views":9816,"_links":{"self":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fcomments&post=1409"}],"version-history":[{"count":0,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1409\/revisions"}],"wp:attachment":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fmedia&parent=1409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fcategories&post=1409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Ftags&post=1409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}