{"id":1025,"date":"2021-02-16T09:05:57","date_gmt":"2021-02-16T06:05:57","guid":{"rendered":"https:\/\/www.aimp.ru\/blogs\/?p=1025"},"modified":"2022-02-07T13:55:30","modified_gmt":"2022-02-07T10:55:30","slug":"","status":"publish","type":"post","link":"https:\/\/aimp.ru\/blogs\/?p=1025&language=en","title":{"rendered":"","raw":""},"content":{"rendered":"\n<!--more-->\n\n\n\n<h2 class=\"has-text-align-center wp-block-heading\" id=\"performance\"><strong>Performance<\/strong><\/h2>\n\n\n\n<p>I looked through all modern skins from our <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=catalog\" target=\"_blank\">add-ons catalog<\/a> and picked several scenarios that had a negative impact on AIMP performance and UI response. I did my best to resolve them at the skin engine level.<\/p>\n\n\n\n<p><strong><strong>Blurring<\/strong><\/strong><\/p>\n\n\n\n<p>I found that in most skins, blurring was the main source of interface lags. In 80% of cases blurring was applied to font shadows and in 15% &#8211; when an album cover was used as a background for some elements. Only 5% fell on the BlurredGlass feature for dynamic content.<\/p>\n\n\n\n<p>I researched the most common scenarios. Aiming to resolve the most frequently encountered lags, I implemented several enhancements that then appeared in AIMP5:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Instead of the Gaus blur algorithm, skins now use the stack-based blur algorithm.&nbsp; While it offers inferior quality at high blurring settings, it works two times faster.<\/li><li>Small raster images now use the stack-based algorithm&#8217;s single-threaded version. The blurring effect is applied quicker, because there is no need for additional threads to be initialized.<\/li><li>At the CoverArtDisplay control level, we introduced the BlurLevel property. It allows the engine to prepare an album cover&#8217;s blurred version beforehand. This is faster than the former mechanics &#8211; blurring the cover every time it renders like how it happens with BlurredGlass.<\/li><\/ul>\n\n\n\n<p><strong><strong>Masks<\/strong><\/strong><\/p>\n\n\n\n<p>The algorithm for applying the mask to the layer now uses a table of pre-calculated values. This change slightly increased the amount of memory used (64 KB), but gave a 2-fold boost in performance.<\/p>\n\n\n\n<p><strong><strong>Animations<\/strong><\/strong><\/p>\n\n\n\n<p>We implemented shared access to temporary buffers and supported their caching. This sped up transition animation by up to five times.<\/p>\n\n\n\n<p><strong><strong>Visualizations<\/strong><\/strong><\/p>\n\n\n\n<p>We also redesigned the API used to transfer visualization data between the sound engine and the skin engine. For AIMP5 this meant a decrease in data conversion procedures and a 3.5-time productivity increase.&nbsp;<\/p>\n\n\n\n<p><strong><strong>&#8220;Tile&#8221; Fill Mode<\/strong><\/strong><\/p>\n\n\n\n<p>Fill speed grew significantly in scenarios when fill mode is set to &#8220;tile&#8221; and over 10 copies or the original texture are displayed.<\/p>\n\n\n\n<p><strong><strong>Album Covers<\/strong><\/strong><\/p>\n\n\n\n<p>Our skin statistics showed an interesting trend: album covers are usually displayed in four particular sizes. In previous versions, the data provider of the current track stored the original cover art and scaled it to the target size on rendering. In AIMP5, the provider has a small cache that stores the cover art&#8217;s last 4 sizes.<\/p>\n\n\n\n<p>If the cache can accommodate all cover sizes a skin needs, AIMP renders covers 12 times faster than before. However, the rendering speed may drop down to 1 in skins that display more cover sizes.<\/p>\n\n\n\n<p><strong><strong>High DPI Emulation<\/strong><\/strong><\/p>\n\n\n\n<p>AIMP supports High DPI emulation mode. The skin engine uses anti-aliasing and stretches images and windows to fit the desired size. In AIMP5, we sped up this process by 1.5 times.<\/p>\n\n\n\n<h2 class=\"has-text-align-center wp-block-heading\" id=\"acs5\">ACS5<\/h2>\n\n\n\n<p>ACS5 is a new container for skin resources that outperforms its predecessors. It optimizes resource storage and helps the skin engine load resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Instead of solid compression, the container compresses each resource individually. Although this change increased the skin size by 40%, it sped up loading time for large skins. This became possible after we eliminated the temporary buffer that was necessary for the solid container to unpack.<br><br><span style=\"text-decoration: underline;\">For example:<\/span><br>the Nagra SNST 4K skin took up 94 MB in the ASC4 container, and 102 MB in ACS5. However, when being loaded, its peak memory use was 1.8 GB, while with ACS5 it&#8217;s only 270 MB!<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Scripts and expressions in binding links are compiled before they are exported into ACS5. This leads to a 3-fold increase in script loading speed. Expressions are also calculated a few times faster, because they do not need to be parsed before each use anymore!<br><span class=\"has-inline-color has-white-color\">_<\/span><\/li><li>Changes in storage mechanics affected textures as well. If a texture has a solid single-color fill, it is replaced with a simple color. This has a positive effect on storage use and rendering speed.<\/li><\/ul>\n\n\n\n<p>Since ACS5 implements file-by-file compression, the texture is unpacked only when AIMP accesses the texture for the first time. The skin engine also learned how to track which textures AIMP uses, and which ones it uses no more. The unused textures are archived and offloaded from memory. With this mechanism we significantly decreased the amount of memory that skins with high dpi support use &#8211; the engine simply does not unpack textures for unused scales.<\/p>\n\n\n\n<p>When using old skin formats, the skin engine now projects the file into memory instead of loading it into memory directly. According to our data, the skins now load 20% slower, but consume half as much memory.<\/p>\n\n\n\n<p>Note that for you to get all the benefits of the new format, old format skins will be repacked into the new format the first time you use them. Thus, the first time you use an old format skin in AIMP5 will be slower than even in AIMP4.<\/p>\n\n\n\n<h2 class=\"has-text-align-center wp-block-heading\" id=\"new-features\"><strong>New Features<\/strong><\/h2>\n\n\n\n<p><strong><strong>Compatibility Settings<\/strong><\/strong><\/p>\n\n\n\n<p>The skin information dialog now includes compatibility settings. They allow you to specify the skin engine for which the skin was developed. The information about skin engine differences is available in the new skin editor&#8217;s help documentation.<\/p>\n\n\n\n<p><strong><strong>Context Menu<\/strong><\/strong><\/p>\n\n\n\n<p>To draw menu items, you can now combine simple colors with textures or use simple colors alone.<\/p>\n\n\n\n<p>\u0422The context menu now supports scrollbars:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"420\" height=\"110\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar.png\" alt=\"\" class=\"wp-image-1065\" srcset=\"https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar.png 420w, https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar-300x79.png 300w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/figure><\/div>\n\n\n\n<p>To replace buttons with a scrollbar, set scrollbar textures in the appropriate properties.<\/p>\n\n\n\n<p>You can keep context menu icons in the resource repository that also stores other textures of that skin. This will allow you to add different icons for the skin&#8217;s different themes.<\/p>\n\n\n\n<p>You can also apply automatic icon themes to you icons, so that they match the current font color of the menu item:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"272\" height=\"110\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-autocoloration.png\" alt=\"\" class=\"wp-image-1066\"\/><\/figure><\/div>\n\n\n\n<p>The setting is useful for modern single-color icons.<\/p>\n\n\n\n<p>The OnClick event became available for user menu items. The event accepts handler scripts.<\/p>\n\n\n\n<p><strong><strong>Resource Repository<\/strong><\/strong><\/p>\n\n\n\n<p>You can use the resource repository to set resources for other UI elements &#8211; the tray icon, context menu icons, tooltip colors.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">Fonts<\/span><br>You can now use a color resource from the repository as a font color.<br><br><span style=\"text-decoration: underline;\">Colors<\/span><br>You now have a capability to change the transparency of the inherited color &#8211; similar to how it was implemented in AIMP for Android v3.0.<\/p>\n\n\n\n<p>You can now use scripts to open font and color settings dialogs.<\/p>\n\n\n\n<p><strong>TASEPlaylist<\/strong><\/p>\n\n\n\n<p>Playlist entries can now have a background texture in addition to or instead of a color.<\/p>\n\n\n\n<p><strong>TASERating<\/strong><\/p>\n\n\n\n<p>We introduced the SkinLayout property that defines a texture&#8217;s storyboard:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><span style=\"text-decoration: underline;\">States<\/span> &#8211; a texture contains types of a &#8220;star&#8221; for different states. The control will draw five of such &#8220;stars&#8221;, and their state will be determined by the current rating value.<\/li><li><span style=\"text-decoration: underline;\">StatesAndValues<\/span> &#8211; a texture contains final types for different rating values and rating states. The control will use the texture frames &#8220;as is&#8221;.<\/li><\/ul>\n\n\n\n<p><strong>TASETextDisplay<\/strong><\/p>\n\n\n\n<p>The CopyToClipboard method is available from the scripts. It copies the current displayed value to the clipboard.<\/p>\n\n\n\n<p><strong>TASETextDisplayEx<\/strong><\/p>\n\n\n\n<p>The CopyToClipboard method is available from the scripts for TASETextDisplayEx as well.<\/p>\n\n\n\n<p>We introduced a new event &#8211; OnHyperlinkClick. It allows you to override a default action for hyperlinks.<\/p>\n\n\n\n<p>Marque display mode that appealed so much to our users is now available for the Windows version. Marque mode allows the player to automatically scroll the displayed text back and forth if it does not fit inside the control that displays it.<\/p>\n\n\n\n<p><strong>TASEStateDisplay<\/strong><\/p>\n\n\n\n<p>This is a new control that is a simplified version of TASEAnimator. It displays frames that are switched manually and are programmed by means of a binding or a script. Frames are not switched by a timer.<\/p>\n\n\n\n<p><strong>TASESeekBar<\/strong><\/p>\n\n\n\n<p>This new control is a special variant of TASESlider, with the waveform visualization isolated. TASESeekBar also learned to visualize a repeat area in AB-repeat mode, for which we introduced additional color and texture properties:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range.png\" alt=\"\" class=\"wp-image-1067\" width=\"557\" height=\"55\" srcset=\"https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range.png 557w, https:\/\/aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range-300x30.png 300w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/figure><\/div>\n\n\n\n<p><strong>TASEPageSelector<\/strong><\/p>\n\n\n\n<p>This page selector is a simple control that came from mobile UI. The control shows how many pages there are and the user&#8217;s current location:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-page-selector.png\" alt=\"\" class=\"wp-image-1068\" width=\"102\" height=\"22\"\/><\/figure><\/div>\n\n\n\n<p>The element is bound to a &#8220;Tab Control&#8221; type access point and the element&#8217;s width is calculated automatically depending on the number of available tabs.<\/p>\n\n\n\n<p><strong>TASELayoutDockSite<\/strong><\/p>\n\n\n\n<p>At the level of the docksite element we introduced a property that allows you to specify which windows it accepts as embedded. Thus, each docksite element can now contain different windows.<\/p>\n\n\n\n<h2 class=\"has-text-align-center wp-block-heading\" id=\"data-providers\"><strong>Data Providers<\/strong><\/h2>\n\n\n\n<p><strong>prvEqualizer<\/strong><\/p>\n\n\n\n<p>Auto and Enabled access points were added.<\/p>\n\n\n\n<p><strong>prvQueue<\/strong><\/p>\n\n\n\n<p>This new provider reports the user playback queue status.<\/p>\n\n\n\n<p><strong>prvPlaybackQueue <\/strong><\/p>\n\n\n\n<p>A data provider for the playback queue.<\/p>\n\n\n\n<p><strong>prvPlaylistFileInfo<\/strong> <\/p>\n\n\n\n<p>This new data provider allows access to information about a playlist&#8217;s selected file.<\/p>\n\n\n\n<p><strong>pmNewPlaylist<\/strong> <\/p>\n\n\n\n<p>A top-level context menu that lists all options for creating a new playlist.<\/p>\n\n\n\n<p><strong>prvScrobbler<\/strong><\/p>\n\n\n\n<p>A new data provider that allows access to the scrobbler&#8217;s state and advanced information about the currently played track. The provider only works when the &#8220;Scrobbler&#8221; plugin is connected and properly configured.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>* * *<\/strong><\/p>\n\n\n\n<p>You can find a detailed list of changes in the skin editor&#8217;s help documentation.<\/p>\n","protected":false,"raw":"<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"performance\"><strong>Performance<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>I looked through all modern skins from our <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=catalog\" target=\"_blank\">add-ons catalog<\/a> and picked several scenarios that had a negative impact on AIMP performance and UI response. I did my best to resolve them at the skin engine level.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Blurring<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I found that in most skins, blurring was the main source of interface lags. In 80% of cases blurring was applied to font shadows and in 15% - when an album cover was used as a background for some elements. Only 5% fell on the BlurredGlass feature for dynamic content.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I researched the most common scenarios. Aiming to resolve the most frequently encountered lags, I implemented several enhancements that then appeared in AIMP5:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Instead of the Gaus blur algorithm, skins now use the stack-based blur algorithm.&nbsp; While it offers inferior quality at high blurring settings, it works two times faster.<\/li><li>Small raster images now use the stack-based algorithm's single-threaded version. The blurring effect is applied quicker, because there is no need for additional threads to be initialized.<\/li><li>At the CoverArtDisplay control level, we introduced the BlurLevel property. It allows the engine to prepare an album cover's blurred version beforehand. This is faster than the former mechanics - blurring the cover every time it renders like how it happens with BlurredGlass.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Masks<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The algorithm for applying the mask to the layer now uses a table of pre-calculated values. This change slightly increased the amount of memory used (64 KB), but gave a 2-fold boost in performance.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Animations<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We implemented shared access to temporary buffers and supported their caching. This sped up transition animation by up to five times.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Visualizations<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We also redesigned the API used to transfer visualization data between the sound engine and the skin engine. For AIMP5 this meant a decrease in data conversion procedures and a 3.5-time productivity increase.&nbsp;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>\"Tile\" Fill Mode<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Fill speed grew significantly in scenarios when fill mode is set to \"tile\" and over 10 copies or the original texture are displayed.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Album Covers<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Our skin statistics showed an interesting trend: album covers are usually displayed in four particular sizes. In previous versions, the data provider of the current track stored the original cover art and scaled it to the target size on rendering. In AIMP5, the provider has a small cache that stores the cover art's last 4 sizes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If the cache can accommodate all cover sizes a skin needs, AIMP renders covers 12 times faster than before. However, the rendering speed may drop down to 1 in skins that display more cover sizes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>High DPI Emulation<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AIMP supports High DPI emulation mode. The skin engine uses anti-aliasing and stretches images and windows to fit the desired size. In AIMP5, we sped up this process by 1.5 times.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"acs5\">ACS5<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>ACS5 is a new container for skin resources that outperforms its predecessors. It optimizes resource storage and helps the skin engine load resources:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Instead of solid compression, the container compresses each resource individually. Although this change increased the skin size by 40%, it sped up loading time for large skins. This became possible after we eliminated the temporary buffer that was necessary for the solid container to unpack.<br><br><span style=\"text-decoration: underline;\">For example:<\/span><br>the Nagra SNST 4K skin took up 94 MB in the ASC4 container, and 102 MB in ACS5. However, when being loaded, its peak memory use was 1.8 GB, while with ACS5 it's only 270 MB!<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:list -->\n<ul><li>Scripts and expressions in binding links are compiled before they are exported into ACS5. This leads to a 3-fold increase in script loading speed. Expressions are also calculated a few times faster, because they do not need to be parsed before each use anymore!<br><span class=\"has-inline-color has-white-color\">_<\/span><\/li><li>Changes in storage mechanics affected textures as well. If a texture has a solid single-color fill, it is replaced with a simple color. This has a positive effect on storage use and rendering speed.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Since ACS5 implements file-by-file compression, the texture is unpacked only when AIMP accesses the texture for the first time. The skin engine also learned how to track which textures AIMP uses, and which ones it uses no more. The unused textures are archived and offloaded from memory. With this mechanism we significantly decreased the amount of memory that skins with high dpi support use - the engine simply does not unpack textures for unused scales.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When using old skin formats, the skin engine now projects the file into memory instead of loading it into memory directly. According to our data, the skins now load 20% slower, but consume half as much memory.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Note that for you to get all the benefits of the new format, old format skins will be repacked into the new format the first time you use them. Thus, the first time you use an old format skin in AIMP5 will be slower than even in AIMP4.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"new-features\"><strong>New Features<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Compatibility Settings<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The skin information dialog now includes compatibility settings. They allow you to specify the skin engine for which the skin was developed. The information about skin engine differences is available in the new skin editor's help documentation.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Context Menu<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>To draw menu items, you can now combine simple colors with textures or use simple colors alone.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0422The context menu now supports scrollbars:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1065,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar.png\" alt=\"\" class=\"wp-image-1065\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>To replace buttons with a scrollbar, set scrollbar textures in the appropriate properties.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can keep context menu icons in the resource repository that also stores other textures of that skin. This will allow you to add different icons for the skin's different themes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can also apply automatic icon themes to you icons, so that they match the current font color of the menu item:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1066,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-autocoloration.png\" alt=\"\" class=\"wp-image-1066\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>The setting is useful for modern single-color icons.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The OnClick event became available for user menu items. The event accepts handler scripts.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Resource Repository<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can use the resource repository to set resources for other UI elements - the tray icon, context menu icons, tooltip colors.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><span style=\"text-decoration: underline;\">Fonts<\/span><br>You can now use a color resource from the repository as a font color.<br><br><span style=\"text-decoration: underline;\">Colors<\/span><br>You now have a capability to change the transparency of the inherited color - similar to how it was implemented in AIMP for Android v3.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can now use scripts to open font and color settings dialogs.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPlaylist<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Playlist entries can now have a background texture in addition to or instead of a color.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASERating<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We introduced the SkinLayout property that defines a texture's storyboard:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li><span style=\"text-decoration: underline;\">States<\/span> - a texture contains types of a \"star\" for different states. The control will draw five of such \"stars\", and their state will be determined by the current rating value.<\/li><li><span style=\"text-decoration: underline;\">StatesAndValues<\/span> - a texture contains final types for different rating values and rating states. The control will use the texture frames \"as is\".<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The CopyToClipboard method is available from the scripts. It copies the current displayed value to the clipboard.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplayEx<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The CopyToClipboard method is available from the scripts for TASETextDisplayEx as well.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We introduced a new event - OnHyperlinkClick. It allows you to override a default action for hyperlinks.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Marque display mode that appealed so much to our users is now available for the Windows version. Marque mode allows the player to automatically scroll the displayed text back and forth if it does not fit inside the control that displays it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEStateDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This is a new control that is a simplified version of TASEAnimator. It displays frames that are switched manually and are programmed by means of a binding or a script. Frames are not switched by a timer.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASESeekBar<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new control is a special variant of TASESlider, with the waveform visualization isolated. TASESeekBar also learned to visualize a repeat area in AB-repeat mode, for which we introduced additional color and texture properties:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1067,\"width\":557,\"height\":55,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range.png\" alt=\"\" class=\"wp-image-1067\" width=\"557\" height=\"55\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPageSelector<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This page selector is a simple control that came from mobile UI. The control shows how many pages there are and the user's current location:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1068,\"width\":102,\"height\":22,\"sizeSlug\":\"large\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-page-selector.png\" alt=\"\" class=\"wp-image-1068\" width=\"102\" height=\"22\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>The element is bound to a \"Tab Control\" type access point and the element's width is calculated automatically depending on the number of available tabs.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASELayoutDockSite<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>At the level of the docksite element we introduced a property that allows you to specify which windows it accepts as embedded. Thus, each docksite element can now contain different windows.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"data-providers\"><strong>Data Providers<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>prvEqualizer<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Auto and Enabled access points were added.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvQueue<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new provider reports the user playback queue status.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvPlaybackQueue <\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A data provider for the playback queue.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvPlaylistFileInfo<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new data provider allows access to information about a playlist's selected file.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>pmNewPlaylist<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A top-level context menu that lists all options for creating a new playlist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvScrobbler<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A new data provider that allows access to the scrobbler's state and advanced information about the currently played track. The provider only works when the \"Scrobbler\" plugin is connected and properly configured.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\"><strong>* * *<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can find a detailed list of changes in the skin editor's help documentation.<\/p>\n<!-- \/wp:paragraph -->"},"excerpt":{"rendered":"","protected":false,"raw":""},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_ru_post_content":"<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\">\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u0437\u0443\u0447\u0438\u0432 \u0432\u0441\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043a\u0438\u043d\u044b \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=catalog\" target=\"_blank\">\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439<\/a>, \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043a\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0420\u0430\u0437\u043c\u044b\u0442\u0438\u0435<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0420\u0430\u0437\u043c\u044b\u0442\u0438\u0435 - \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043a\u0438\u043d\u043e\u0432. \u041f\u0440\u0438\u0447\u0435\u043c, \u0432 80% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043a \u0442\u0435\u043d\u044f\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u0432 15% - \u043a \u043e\u0431\u043b\u043e\u0436\u043a\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u043e\u043d\u0430 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043b\u0438\u0448\u044c 5% - \u043a\u0430\u043a BlurredGlass \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0438 \u0438\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438, \u0432 AIMP5 \u0431\u044b\u043b\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\u0412\u043c\u0435\u0441\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f \u043f\u043e \u0413\u0430\u0443\u0441\u0443, \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0435\u043a\u0430. \u041e\u043d \u0434\u0430\u0435\u0442 \u043c\u0435\u043d\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 2 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/li><li>\u0414\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 - \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. <\/li><li>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f CoverArtDisplay \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e BlurLevel, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0432\u0438\u0436\u043a\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u044b\u0442\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430, \u0438 \u043d\u0435 \u0440\u0430\u0437\u043c\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 BlurredGlass.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041c\u0430\u0441\u043a\u0438<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u043a\u0438 \u043a \u0441\u043b\u043e\u044e \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u0434-\u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (64 \u041a\u0411), \u044d\u0442\u043e \u0434\u0430\u043b\u043e \u043f\u043e\u0447\u0442\u0438 2\u0445-\u043a\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0431\u0443\u0444\u0435\u0440\u0430\u043c \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0445 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0434\u043e 5 \u0440\u0430\u0437. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 AIMP5, \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0410\u041f\u0418 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0438 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043a\u043e\u043c - \u0431\u044b\u043b\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e \u0434\u0430\u043b\u043e \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 3.5 \u0440\u0430\u0437\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0420\u0435\u0436\u0438\u043c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \"\u0437\u0430\u043c\u043e\u0441\u0442\u0438\u0442\u044c\"<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \"\u0437\u0430\u043c\u043e\u0441\u0442\u0438\u0442\u044c\" \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445, \u0433\u0434\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 10 \u043a\u043e\u043f\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041e\u0431\u043b\u043e\u0436\u043a\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u0441\u043a\u0438\u043d\u0430\u043c \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443: \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c, \u0441\u043a\u0438\u043d\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u043e\u0431\u043b\u043e\u0436\u043a\u0443 \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0432 4\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u043c \u0442\u0440\u0435\u043a\u0435 \u0445\u0440\u0430\u043d\u0438\u043b \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0435 \u043f\u043e\u0434 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435. \u0412 AIMP5, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u044d\u0448, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4-\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430. <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412 \u0441\u043a\u0438\u043d\u0430\u0445, \u0433\u0434\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u043b\u043e\u0436\u0435\u043a \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0435\u0448\u0430 - \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0445 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u0432 12 \u0440\u0430\u0437. \u0412 \u0441\u043a\u0438\u043d\u0430\u0445, \u0433\u0434\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0431\u043b\u043e\u0436\u0435\u043a - \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e 1.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u042d\u043c\u0443\u043b\u044f\u0446\u0438\u044f high dpi<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 high-dpi, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043e\u043a \u0441\u0430\u043c \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430 \u0434\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430, \u0443\u0441\u043a\u043e\u0440\u0435\u043d \u0432 1.5 \u0440\u0430\u0437\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"acs5\">ACS5<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>ACS5 - \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u043a\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432, \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043a\u043e\u043c:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>\u0412\u043c\u0435\u0441\u0442\u043e solid-\u0441\u0436\u0430\u0442\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e. \u0422\u0430\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0441\u043a\u0438\u043d\u043e\u0432 \u0434\u043e 40%, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 solid-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u044d\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u043a\u0438\u043d\u043e\u0432.<br><br><span style=\"text-decoration: underline;\">\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/span>: <br>\u0421\u043a\u0438\u043d Nagra SNST 4K \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 ACS4 \u0437\u0430\u043d\u0438\u043c\u0430\u043b 94 \u041c\u0411, \u0432 ACS5 - 102 \u041c\u0411. \u041e\u0434\u043d\u0430\u043a\u043e,  \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c 1.8 \u0413\u0411 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0438\u043a\u0435, \u0430 \u0441 ACS5 - \u0432\u0441\u0435\u0433\u043e 270 \u041c\u0411!<br><span class=\"has-inline-color has-white-color\">_<\/span><\/li><li>\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u043d\u0434\u0438\u043d\u0433-\u0441\u0432\u044f\u0437\u044f\u0445 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 ACS5 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435: \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0432 3 \u0440\u0430\u0437\u0430, \u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u0430\u0440\u0441\u0438\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a!<br><span class=\"has-inline-color has-white-color\">_<\/span><\/li><li>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u0441\u043d\u0443\u043b\u0438\u0441\u044c \u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440: \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043e\u0434\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043b\u0438\u0432\u043a\u043e\u0439 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c - \u044d\u0442\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u0430\u043a \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430. <br><\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 ACS5 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u043e\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0441\u0436\u0430\u0442\u0438\u0435, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u043d\u0435\u0439. \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043e\u043a \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0430 \u043a\u0430\u043a\u0438\u0435 - \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442. \u041d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u043a\u0438\u043d\u0430\u0445 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 high dpi, \u0442.\u043a. \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0441\u043a\u0438\u043d\u043e\u0432 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u0432\u043c\u0435\u0441\u0442\u043e \u0435\u0433\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0437\u0430\u043c\u0435\u0440\u0430\u043c, \u0441\u043a\u0438\u043d\u044b \u0441\u0442\u0430\u043b\u0438 \u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0434\u043e 20% \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u043d\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u044e\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u0442 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u043a\u0438\u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u044b\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0438\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043b\u0433\u0438\u043c \u0434\u0430\u0436\u0435 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 AIMP4.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"\u043d\u043e\u0432\u044b\u0435-\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\">\u041d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043a\u0438\u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043a\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u043a\u0438\u043d. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f\u0445 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0441\u043a\u0438\u043d-\u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u0441\u043a\u0438\u043d\u043e\u0432.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u043c \u0438\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1065,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar.png\" alt=\"\" class=\"wp-image-1065\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u043a\u043e\u043d\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441\u043a\u0438\u043d\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043a\u043e\u043d\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0435\u043c \u0441\u043a\u0438\u043d\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u0430 \u0440\u044f\u0434\u0443 \u0441 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u043f\u0446\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0435\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0448\u0440\u0438\u0444\u0442\u0430 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1066,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-autocoloration.png\" alt=\"\" class=\"wp-image-1066\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u041e\u043f\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u043d\u043e\u0445\u0440\u043e\u043c\u043d\u044b\u0445 \u0438\u043a\u043e\u043d\u043e\u043a.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0441\u0442\u0430\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 OnClick, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 - \u0438\u043a\u043e\u043d\u043a\u0443 \u0432 \u0442\u0440\u0435\u0435, \u0438\u043a\u043e\u043d\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a - \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><span style=\"text-decoration: underline;\">\u0428\u0440\u0438\u0444\u0442\u044b<\/span><br>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0432\u0435\u0442\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442-\u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<br><br><span style=\"text-decoration: underline;\">\u0426\u0432\u0435\u0442\u0430<\/span><br>\u041f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0443 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 - \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 AIMP for Android v3.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u0438 \u0446\u0432\u0435\u0442\u043e\u0432.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPlaylist<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0417\u0430\u043f\u0438\u0441\u044f\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0446\u0432\u0435\u0442\u0443 \u0438\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASERating<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e SkinLayout, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043a\u0430\u0434\u0440\u043e\u0432\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li><span style=\"text-decoration: underline;\">States<\/span> - \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0438\u0434\u044b \"\u0437\u0432\u0435\u0437\u0434\u044b\" \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c 5 \u0442\u0430\u043a\u0438\u0445 \"\u0437\u0432\u0435\u0437\u0434\", \u0430 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438.<\/li><li><span style=\"text-decoration: underline;\">StatesAndValues<\/span> - \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u0438 \u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \"\u043a\u0430\u043a \u0435\u0441\u0442\u044c\".<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0418\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043c\u0435\u0442\u043e\u0434 CopyToClipboard, \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplayEx<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0422\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f TASETextDisplay, \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043c\u0435\u0442\u043e\u0434 CopyToClipboard.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0412\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 - OnHyperlinkClick, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043e\u043a, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BB-\u043a\u043e\u0434\u043e\u0432.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0422\u0430\u043a \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f Marque, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0434\u043b\u044f Windows-\u0432\u0435\u0440\u0441\u0438\u0438. \u0420\u0435\u0436\u0438\u043c marque \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u0437\u0430\u0434-\u0432\u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEStateDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u042d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 TASEAnimator. \u0417\u0434\u0435\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u0430\u0434\u0440\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0431\u0438\u043d\u0434\u0438\u043d\u0433 \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0430 \u043d\u0435 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASESeekBar<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u042d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f - \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 TASESlider-\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f waveform. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, TASESeekBar \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \"\u0410\u0411-\u043f\u043e\u0432\u0442\u043e\u0440\", \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0431\u044b\u043b\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1067,\"width\":557,\"height\":55,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range.png\" alt=\"\" class=\"wp-image-1067\" width=\"557\" height=\"55\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPageSelector<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446 - \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u0438\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1068,\"width\":102,\"height\":22,\"sizeSlug\":\"large\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-page-selector.png\" alt=\"\" class=\"wp-image-1068\" width=\"102\" height=\"22\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0442\u043e\u0447\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0438\u043f\u0430 \"Tab Control\" \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432\u043a\u043b\u0430\u0434\u043e\u043a.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASELayoutDockSite<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 docksite-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u043a\u043d\u0430 \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u0436\u0434\u044b\u0439 docksite-\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043a\u043d\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b-\u0434\u0430\u043d\u043d\u044b\u0445\">\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>prvEqualizer<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Auto \u0438 Enabled<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvQueue<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0443\u0437\u043d\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \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><strong>prvPlaybackQueue <\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \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><strong>prvPlaylistFileInfo<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0432 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0435 \u0444\u0430\u0439\u043b\u0435.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>pmNewPlaylist<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvScrobbler<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0441\u043a\u0440\u043e\u0431\u0431\u043b\u0435\u0440\u0430 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u043c \u0442\u0440\u0435\u043a\u0435. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \"Scrobbler\".<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\"><strong>* * *<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u0441\u043a\u0438\u043d\u043e\u0432.<\/p>\n<!-- \/wp:paragraph -->","_ru_post_name":"aimp5-skin-engine","_ru_post_excerpt":"","_ru_post_title":"AIMP5: Skin Engine","_en_post_content":"<!-- wp:more -->\n<!--more-->\n<!-- \/wp:more -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"performance\"><strong>Performance<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>I looked through all modern skins from our <a rel=\"noreferrer noopener\" href=\"https:\/\/www.aimp.ru\/?do=catalog\" target=\"_blank\">add-ons catalog<\/a> and picked several scenarios that had a negative impact on AIMP performance and UI response. I did my best to resolve them at the skin engine level.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Blurring<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I found that in most skins, blurring was the main source of interface lags. In 80% of cases blurring was applied to font shadows and in 15% - when an album cover was used as a background for some elements. Only 5% fell on the BlurredGlass feature for dynamic content.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>I researched the most common scenarios. Aiming to resolve the most frequently encountered lags, I implemented several enhancements that then appeared in AIMP5:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Instead of the Gaus blur algorithm, skins now use the stack-based blur algorithm.&nbsp; While it offers inferior quality at high blurring settings, it works two times faster.<\/li><li>Small raster images now use the stack-based algorithm's single-threaded version. The blurring effect is applied quicker, because there is no need for additional threads to be initialized.<\/li><li>At the CoverArtDisplay control level, we introduced the BlurLevel property. It allows the engine to prepare an album cover's blurred version beforehand. This is faster than the former mechanics - blurring the cover every time it renders like how it happens with BlurredGlass.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Masks<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The algorithm for applying the mask to the layer now uses a table of pre-calculated values. This change slightly increased the amount of memory used (64 KB), but gave a 2-fold boost in performance.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Animations<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We implemented shared access to temporary buffers and supported their caching. This sped up transition animation by up to five times.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Visualizations<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We also redesigned the API used to transfer visualization data between the sound engine and the skin engine. For AIMP5 this meant a decrease in data conversion procedures and a 3.5-time productivity increase.&nbsp;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>\"Tile\" Fill Mode<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Fill speed grew significantly in scenarios when fill mode is set to \"tile\" and over 10 copies or the original texture are displayed.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Album Covers<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Our skin statistics showed an interesting trend: album covers are usually displayed in four particular sizes. In previous versions, the data provider of the current track stored the original cover art and scaled it to the target size on rendering. In AIMP5, the provider has a small cache that stores the cover art's last 4 sizes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If the cache can accommodate all cover sizes a skin needs, AIMP renders covers 12 times faster than before. However, the rendering speed may drop down to 1 in skins that display more cover sizes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>High DPI Emulation<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AIMP supports High DPI emulation mode. The skin engine uses anti-aliasing and stretches images and windows to fit the desired size. In AIMP5, we sped up this process by 1.5 times.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"acs5\">ACS5<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>ACS5 is a new container for skin resources that outperforms its predecessors. It optimizes resource storage and helps the skin engine load resources:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>Instead of solid compression, the container compresses each resource individually. Although this change increased the skin size by 40%, it sped up loading time for large skins. This became possible after we eliminated the temporary buffer that was necessary for the solid container to unpack.<br><br><span style=\"text-decoration: underline;\">For example:<\/span><br>the Nagra SNST 4K skin took up 94 MB in the ASC4 container, and 102 MB in ACS5. However, when being loaded, its peak memory use was 1.8 GB, while with ACS5 it's only 270 MB!<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:list -->\n<ul><li>Scripts and expressions in binding links are compiled before they are exported into ACS5. This leads to a 3-fold increase in script loading speed. Expressions are also calculated a few times faster, because they do not need to be parsed before each use anymore!<br><span class=\"has-inline-color has-white-color\">_<\/span><\/li><li>Changes in storage mechanics affected textures as well. If a texture has a solid single-color fill, it is replaced with a simple color. This has a positive effect on storage use and rendering speed.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Since ACS5 implements file-by-file compression, the texture is unpacked only when AIMP accesses the texture for the first time. The skin engine also learned how to track which textures AIMP uses, and which ones it uses no more. The unused textures are archived and offloaded from memory. With this mechanism we significantly decreased the amount of memory that skins with high dpi support use - the engine simply does not unpack textures for unused scales.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>When using old skin formats, the skin engine now projects the file into memory instead of loading it into memory directly. According to our data, the skins now load 20% slower, but consume half as much memory.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Note that for you to get all the benefits of the new format, old format skins will be repacked into the new format the first time you use them. Thus, the first time you use an old format skin in AIMP5 will be slower than even in AIMP4.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"new-features\"><strong>New Features<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Compatibility Settings<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The skin information dialog now includes compatibility settings. They allow you to specify the skin engine for which the skin was developed. The information about skin engine differences is available in the new skin editor's help documentation.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Context Menu<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>To draw menu items, you can now combine simple colors with textures or use simple colors alone.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u0422The context menu now supports scrollbars:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1065,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-scrollbar.png\" alt=\"\" class=\"wp-image-1065\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>To replace buttons with a scrollbar, set scrollbar textures in the appropriate properties.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can keep context menu icons in the resource repository that also stores other textures of that skin. This will allow you to add different icons for the skin's different themes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can also apply automatic icon themes to you icons, so that they match the current font color of the menu item:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1066,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-contextmenu-autocoloration.png\" alt=\"\" class=\"wp-image-1066\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>The setting is useful for modern single-color icons.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The OnClick event became available for user menu items. The event accepts handler scripts.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><strong>Resource Repository<\/strong><\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can use the resource repository to set resources for other UI elements - the tray icon, context menu icons, tooltip colors.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><span style=\"text-decoration: underline;\">Fonts<\/span><br>You can now use a color resource from the repository as a font color.<br><br><span style=\"text-decoration: underline;\">Colors<\/span><br>You now have a capability to change the transparency of the inherited color - similar to how it was implemented in AIMP for Android v3.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can now use scripts to open font and color settings dialogs.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPlaylist<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Playlist entries can now have a background texture in addition to or instead of a color.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASERating<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We introduced the SkinLayout property that defines a texture's storyboard:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li><span style=\"text-decoration: underline;\">States<\/span> - a texture contains types of a \"star\" for different states. The control will draw five of such \"stars\", and their state will be determined by the current rating value.<\/li><li><span style=\"text-decoration: underline;\">StatesAndValues<\/span> - a texture contains final types for different rating values and rating states. The control will use the texture frames \"as is\".<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The CopyToClipboard method is available from the scripts. It copies the current displayed value to the clipboard.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASETextDisplayEx<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The CopyToClipboard method is available from the scripts for TASETextDisplayEx as well.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>We introduced a new event - OnHyperlinkClick. It allows you to override a default action for hyperlinks.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Marque display mode that appealed so much to our users is now available for the Windows version. Marque mode allows the player to automatically scroll the displayed text back and forth if it does not fit inside the control that displays it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEStateDisplay<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This is a new control that is a simplified version of TASEAnimator. It displays frames that are switched manually and are programmed by means of a binding or a script. Frames are not switched by a timer.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASESeekBar<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new control is a special variant of TASESlider, with the waveform visualization isolated. TASESeekBar also learned to visualize a repeat area in AB-repeat mode, for which we introduced additional color and texture properties:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1067,\"width\":557,\"height\":55,\"sizeSlug\":\"full\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-trackrepeat-range.png\" alt=\"\" class=\"wp-image-1067\" width=\"557\" height=\"55\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>TASEPageSelector<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This page selector is a simple control that came from mobile UI. The control shows how many pages there are and the user's current location:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"align\":\"center\",\"id\":1068,\"width\":102,\"height\":22,\"sizeSlug\":\"large\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img src=\"https:\/\/www.aimp.ru\/blogs\/wp-content\/uploads\/2020\/12\/ase5-page-selector.png\" alt=\"\" class=\"wp-image-1068\" width=\"102\" height=\"22\"\/><\/figure><\/div>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>The element is bound to a \"Tab Control\" type access point and the element's width is calculated automatically depending on the number of available tabs.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TASELayoutDockSite<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>At the level of the docksite element we introduced a property that allows you to specify which windows it accepts as embedded. Thus, each docksite element can now contain different windows.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"center\"} -->\n<h2 class=\"has-text-align-center\" id=\"data-providers\"><strong>Data Providers<\/strong><\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>prvEqualizer<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Auto and Enabled access points were added.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvQueue<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new provider reports the user playback queue status.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvPlaybackQueue <\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A data provider for the playback queue.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvPlaylistFileInfo<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>This new data provider allows access to information about a playlist's selected file.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>pmNewPlaylist<\/strong> <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A top-level context menu that lists all options for creating a new playlist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>prvScrobbler<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A new data provider that allows access to the scrobbler's state and advanced information about the currently played track. The provider only works when the \"Scrobbler\" plugin is connected and properly configured.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\"><strong>* * *<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>You can find a detailed list of changes in the skin editor's help documentation.<\/p>\n<!-- \/wp:paragraph -->","_en_post_name":"","_en_post_excerpt":"","_en_post_title":"","edit_language":"en","footnotes":""},"categories":[3,61],"tags":[97,66],"class_list":["post-1025","post","type-post","status-publish","format-standard","hentry","category-aimp","category-61","tag-aimp5","tag-skin-engine"],"views":15918,"_links":{"self":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1025","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=1025"}],"version-history":[{"count":0,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=\/wp\/v2\/posts\/1025\/revisions"}],"wp:attachment":[{"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fmedia&parent=1025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Fcategories&post=1025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aimp.ru\/blogs?language=en%2Findex.php&rest_route=%2Fwp%2Fv2%2Ftags&post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}