AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Topic started by: Black_AVP_Bim on December 11, 2018, 15:38:24

Title: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:38:24
Много полезных вещей уже утонуло в теме [FAQ] Вопросы по работе в AIMP SkinEditor v3.50+ (https://www.aimp.ru/forum/index.php?topic=27831.0), да и в других тоже, порой трудно что-либо найти, а новичкам даже подобрать ключевые слова для поиска. В справке по редактору скинов тоже пока много чего нет, да и невозможно все осветить нюансы работы над скином, равно, как и примеры скриптов на все случаю жизни.
Предлагаю выкладывать сюда полезные идеи и нетривиальные решения каких-либо проблем. Свелые головы на форуме ещё не перевелись.
Но вопросы, всё же, лучше задавать в вышеупомянутой теме, дабы и эта тема не превратилась в свалку.

Как с помощью слайдеров изменять раздельно оттенок, насыщенность и прозрачность элементов (https://www.aimp.ru/forum/index.php?topic=61370.msg379236#msg379236)
Простейшая реализация ColorPicker-а (https://www.aimp.ru/forum/index.php?topic=61370.msg379237#msg379237)
Изменение параметров шрифтов (https://www.aimp.ru/forum/index.php?topic=61370.msg379239#msg379239)
Как сбросить все полосы эквалайзера в 0 dB нажатием кнопки (https://www.aimp.ru/forum/index.php?topic=61370.msg379241#msg379241)
Как сбросить все эффекты DSP (https://www.aimp.ru/forum/index.php?topic=61370.msg379248#msg379248)
Эффект циклического изменения цвета элементов (https://www.aimp.ru/forum/index.php?topic=61370.msg379242#msg379242)
Работа с провайдером prvPlayerState (https://www.aimp.ru/forum/index.php?topic=61370.msg379245#msg379245)
Обработка событий, ScriptableEventHandler (https://www.aimp.ru/forum/index.php?topic=61370.msg379395#msg379395)
Текстовый ввод параметра (https://www.aimp.ru/forum/index.php?topic=61370.msg379461#msg379461)
Анимация динамиков на основе TASEAnimator (AIMP 4.6+) (https://www.aimp.ru/forum/index.php?topic=61370.msg386428#msg386428)
Скриптовая реализация Track Preview и Repeat AB (https://www.aimp.ru/forum/index.php?topic=61370.msg386775#msg386775)
Color Picker a la Photoshop (https://www.aimp.ru/forum/index.php?topic=61370.msg386921#msg386921)
Визуализация функции Repeat AB на основе Bliss Lite (https://www.aimp.ru/forum/index.php?topic=61370.msg386922#msg386922)
Bliss Compact with Track Preview (https://www.aimp.ru/forum/index.php?topic=61370.msg386946#msg386946)
Модификация на "Визуализация функции Repeat AB" (https://www.aimp.ru/forum/index.php?topic=61370.msg387202#msg387202)
Переключение темы по расписанию (https://www.aimp.ru/forum/index.php?topic=61370.msg387247#msg387247)
Автоперключение тем в стандартном Bliss4k по расписанию (https://www.aimp.ru/forum/index.php?topic=61370.msg387274#msg387274)
Ввод числовых параметров перемещением мыши (https://www.aimp.ru/forum/index.php?topic=61370.msg387333#msg387333)
Пример совместного использования LayoutTabbedGroup и TabControl (https://www.aimp.ru/forum/index.php?topic=61370.msg390890#msg390890)
Пример использования гиперссылок в скине (https://www.aimp.ru/forum/index.php?topic=61370.msg391306#msg391306)
Плавное изменение прозрачности элемента с помощью таймера (https://www.aimp.ru/forum/index.php?topic=61370.msg398211#msg398211)
Пример использования новых элементов AIMP5 и немного "хитрого"  биндинга (https://www.aimp.ru/forum/index.php?topic=61370.msg416371#msg416371)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:40:02
Пример работы со цветом. Как с помощью слайдеров изменять раздельно оттенок, насыщенность и прозрачность элементов.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:41:58
Простейшая реализация ColorPicker-а. Может пригодиться в диалогах настройки собственного скина.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:44:44
Многие испытывают трудности с изменением параметров шрифтов. Пример для шрифтов в плейлисте:
Code: [Select]
procedure Execute(var State: Integer);
var
  PL: TComponent;
 
begin 
  PL:= FindObject('Playlist');
  PL.Set('Resources.ItemLine1Fonts.Normal.Name', 'Arial');
  PL.Set('Resources.ItemLine1Fonts.Normal.Color', $FF0000);
  PL.Set('Resources.ItemLine1Fonts.Normal.Height', 14);
  PL.Set('Resources.ItemLine1Fonts.Normal.Style', '[fsBold, fsItalic]');
end;

Все параметры шрифтов доступны из скриптов, надо только правильно к ним обращаться.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:48:20
Как сбросить все полосы эквалайзера в 0 dB нажатием кнопки.
Code: [Select]
procedure Execute(var State: Integer);
var
  N: Integer;
 
begin
  with FindObject('prvEqualizer') do
    for N:= 1 to 18 do
      Set('BandValue' + IntToStr(N), 0);
end;

Кнопка должна быть связана со скриптовым счётчиком, выражение в связи: Value+1, модуль счётчика - по умолчанию (2).
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 15:56:50
Этот эффект в своих скина я назвал "Радугой", использовался для подсветки индикаторов в УМ.
В данном примере панель меняет циклически свой цвет, проходя все оттенки цветового круга.
Code: [Select]
procedure Execute(var State: Integer);
begin
  FindObject('Panel').Set('Color', HSLToColor(State / 360, 1, 0.5))
end;
Таймер с периодом 100 мс подключен к скриптовому счётчику с модулем 360.
Весь цикл при этом занимает 36 с. Кому-то, возможно, это покажется слишком долго, тогда можно уменьшить модуль счёткика.

В этом примере модуль = 36
Code: [Select]
procedure Execute(var State: Integer);
const
  Step = 10;
 
begin
  FindObject('Panel').Set('Color', HSLToColor(State * Step / 360, 1, 0.5))
end;
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 16:08:35
Работа с провайдером prvPlayerState.
Из скриптов доступны свойства: State, Position, PositionMin, PositionMax
Возвращаемые значения State (тип - String): 'opsStop', 'opsPause', 'opsPlay'
Position, PositionMin, PositionMax - тип Double. Position - текущая позиция в треке при воспроизведении, PositionMin и PositionMax определяют диапазон для Position.

Code: [Select]
  PS:= FindObject('prvPlayerState');
  Pt:= PS.Get('Position'); -  текущая позиция в треке
  Pm:= PS.Get('PositionMax'); - продолжительность трека

Обработка состояний плеера:
Code: [Select]
  case PS.Get('State') of
    'opsStop':
      begin
          {Ваш код для обработки этого состояния}
      end; 
    'opsPlay':
      begin
          {Ваш код для обработки этого состояния}
      end; 
    'opsPause':
      begin
          {Ваш код для обработки этого состояния}
      end; 
  end;
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 16:17:56
Попытка имитации снегопада. Можно расценивать как шутку в свете приближающегося Нового года.
Вместо снежинок могут быть и капли дождя, стекающие по BluredGlass - у кого на что фантазии хватит.
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=55810)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 11, 2018, 16:24:13
Как сбросить все эффекты DSP.

Достаточно подключить кнопку к скиптовому счётчику, содержащему следующий код:
Code: [Select]
procedure Execute(var State: Integer);
begin
  FindObject('prvTempo').Set('Position', 1);
  FindObject('prvSpeed').Set('Position', 1);
  FindObject('prvReverb').Set('Position', 0);
  FindObject('prvFlanger').Set('Position', 0);
  FindObject('prvPitch').Set('Position', 0);
  FindObject('prvTrueBass').Set('Position', 0);
  FindObject('prvEcho').Set('Position', 0);
  FindObject('prvEnhancer').Set('Position', 0);
  FindObject('prvChorus').Set('Position', 0);
  FindObject('prvBalance').Set('Position', 0)
end;

Во вложении пример, включающий и вышеуказанный скрипт и биндинг-схему для отслеживания изменений всех регуляторов DSP-эффектов.

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=58640)

Правда, есть некоторые нюансы, связанные с тем, что биндинг работает только с целочисленными значениями.  :-[
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 13, 2018, 16:46:53
Пример обработки событий. В качестве подопытного контрола выбран TASETextDisplay, имеющий все доступные события. В принципе, это может быть любой другой элемент.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Aleksandr009 on December 14, 2018, 15:24:10
Текстовый ввод параметра.

Пример со сменой шрифта.
В примере используется элемент TASESearchEdit и 3 скрипта. Один сменяет шрифт в репозитории ресурсов и сохраняет его в файл настроек обложки, второй стоит в событие OnLoaded (В главном окне) чтобы при перезапуске плеера шрифт автоматически применялся.  И последний служит просто для сброса шрифта.

Также на основе этого примера в обложку можно вводить многие текстовые данные, например цвет.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on April 22, 2019, 16:55:30
Анимация динамиков на основе TASEAnimator (AIMP 4.6+)

В основе идеи - аниматор диффузора с "обратной связью", т.е. он сам себя останавливает при достижении последнего кадра. Кадров всего 4: выдвинутое состояние (1), втянутое (3) и  два кадра нейтрального положения (2 и 4).
ScriptableVisualizationHandler получает информацию со спектрума, находит максимум в указанном диапазоне частот и сравнивает его со значением, заданным регулятором чувствительности и при превышении этого порога запускает аниматор с первого кадра.
Подробности во вложенном проекте.

Соответствие частот индексам массива спектрума:
array [0..AIMP_VISUAL_SPECTRUM_MAX - 1] of Single;

Распределение значений: [0.0 .. 100.0 .. бесконечность]

Краткий список соответствия индекса массива частоте сигнала:
0 ~ 20 Гц
10 ~ 200 Гц
20 ~ 400 Гц
30 ~ 630 Гц
40 ~ 870 Гц
50 ~ 1.1 KГц
60 ~ 1.4 KГц
70 ~ 1.7 KГц
80 ~ 2.1 KГц
90 ~ 2.5 KГц
100 ~ 3.0 KГц
110 ~ 3.5 KГц
120 ~ 4.0 KГц
130 ~ 4.5 KГц
140 ~ 5.2 KГц
150 ~ 6.0 KГц
160 ~ 6.7 KГц
170 ~ 7.6 KГц
180 ~ 8.5 KГц
190 ~ 9.6 KГц
200 ~ 11.0 KГц
210 ~ 12.0 KГц
220 ~ 13.5 KГц
230 ~ 15.0 KГц
240 ~ 16.8 KГц
255 ~ 20.0 KГц

(Костаната AIMP_VISUAL_SPECTRUM_MAX = 256)
Title: Собака
Post by: ColorCode on April 29, 2019, 13:08:58
"Прослушивание участка" - скриптовый вариант Track Preview (https://www.aimp.ru/?do=catalog&rec_id=746) для прослушивания определённого участка дорожек.

"Повтор отрезка АБ" - графические метки для встроенной функции "Повтор отрезка А-Б".

(https://i.imgur.com/1UlkSva.gif)

P.S. Упс, а вот это лучше (https://www.youtube.com/watch?v=IpNy7lCzw_0) -> ссылка (https://www.aimp.ru/forum/index.php?topic=27831.msg378963#msg378963) (жаль не проект)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on May 02, 2019, 08:21:05
Ещё одна реализация Color Picker (AIMP 4.6). Старался максимально приблизить поведение к привычному колорпикеру в Photoshop.
Пришлось несколько покостылить по причине того, что нельзя при вызове хендлера передать ему параметры.
Во вложении пример диалога кастомизации с вызовом Color Picker'a. Все парамеры цвета элементов сохраняются в ini-файле скина.
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=57423)

Добавлен вариант с регулировкой прозрачности.
Файл проекта обновлён.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on May 02, 2019, 08:33:03
... жаль не проект
Проект не секрет, тогда просто это ни у кого интереса не вызвало, да и сейчас, скорее всего, тоже.  :-[

Визуализация функции Repeat AB.

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=27831.0;attach=55772)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on May 02, 2019, 17:56:43
Выложу и свой вариант TrackPreview, тот, что использую в плейлистах своих скинов.
Title: Re: Визуализация функции Repeat AB
Post by: ColorCode on May 10, 2019, 08:51:01
...ни у кого интереса не вызвало...
И у меня не вызвало. (https://www.youtube.com/watch?v=Aa2FlN3W9h8)

Модификация на "Визуализация функции Repeat AB (https://www.aimp.ru/forum/index.php?topic=61370.msg386922#msg386922)" от Black_AVP

(https://i.imgur.com/ByxL172.gif)

Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: gr-e on May 11, 2019, 22:11:43
Переключение темы по расписанию.

Настройки открываются кнопкой переключения темы.

UPD: обновил пример с использованием провайдера времени вместо таймеров.

UPD2: Добавлен режим "Авто" (использовать тему AIMP), багфиксы
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on May 12, 2019, 20:44:24
Переключение темы по расписанию.
Что-то уж больно мудрёно...  :-\
У на с же есть в распоряжении провайдер prvSystemTime - с ним всё намного проще получается и скрипт с ним же засинхронизировать можно.

Автоперключение тем в стандартном Bliss4k по расписанию
Добавлены провайдеры:
ThemeSwitchController
TimeDark_Counter
TimeLight_Counter
Изменять время лучше всего вращением колеса над меткой.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: gr-e on May 12, 2019, 21:32:12
У на с же есть в распоряжении провайдер prvSystemTime
Да уж, с провайдером гораздо проще получается
Изменять время лучше всего вращением колеса над меткой.
Да, я потому и спрашивал ранее про SliderMasked, просто тут не стал уже делать.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on May 14, 2019, 10:25:48
... Да, я потому и спрашивал ранее про SliderMasked, просто тут не стал уже делать.
В принципе можно использовать способ ввода, как в Фотошопе (и не только) в числовых полях с двунаправленными стрелочками - протяжкой мыши с зажатой ЛКМ.

В прилагаемом примере обработчик(и) один на все поля ввода (надо только следить за совпадением имён).
Можно использовать не только TASETextDisplay, но и другие элементы, имеющие обработчики состояний мыши.
Если нужно более плавное изменение значений при вводе, можно в скрипте вычисляемое приращение поделить не некоторое число.
В данном примере отслеживается горизонтальное перемещение мыши, с равным успехом можно использовать и вертикальное, а то и оба вместе (для хитрых задач ;)).
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on August 20, 2019, 15:39:07
Совместное использование LayoutTabbedGroup и TabControl.
Заголовки вкладок - это DisplayName контейнеров в группе.

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=58559)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on August 31, 2019, 08:10:36
Кнопка Проверить Обновления Обложки/Check For Skin Updates Button [Scriptless]
Has 2 frames. You could add the third frame for "pressed state" which would require a script in Events (OnClick) section.
(https://i.imgur.com/gMBEhRP.png)
(https://i.imgur.com/XmuzF5V.png)
Don't forget to change the Hint also.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on September 04, 2019, 19:09:32
ColorPicker+
на основе ColorPicker (https://www.aimp.ru/forum/index.php?topic=61370.msg386921#msg386921)

(https://i.imgur.com/VvAW8T2.png)
  • can be stretched
  • can change it's color after confirmation (OK button)
  • uses special font (PickerFont.ttf which has to be attached to the skin)
*Do not fiddle with Caption property.
(https://i.imgur.com/ZUDCz0x.png)
Очень хотелось бы возможность менять тему на светленькую ( а если совсем наглеть то и настройки фонового цвета и цвета шрифта)
- Change the color of album groupe name ? Actually the grey is very simlilar to the background and make hard to read the name. Maybe an option in pannel option of skin ?
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on September 08, 2019, 02:48:00
Font Size Slider/Ползунок размера шрифта
(https://i.imgur.com/WZG6m06.gif)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on September 12, 2019, 01:49:57
Resize mode/Режим изменения размера

(https://i.imgur.com/9poIvVU.gif)
  • один скрипт для события OnResize для отображения значений (должен быть присвоен контейнеру)
  • другой для OnMouseEnter, чтобы скрыть их
  • третий скрипт (logica_Hide_All) скрывает разделители
    + версия в пикселях [px]
Обложка очень нравится, жаль до идеала не дотягивает по нескольким пунктам:
1. Нельзя растянуть по ширине (см. скрин)
2. Показывается мало плейлистов
3. Хотелось бы уменьшить вертикальные зазоры
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=57809.0;attach=56096)
3. 4.
(https://c.radikal.ru/c05/1804/0b/753eb149f602.png)
Приветствую! Спасибо за обложку!
И такая просьба. У меня ноут, экран небольшой и название 3-го по списку плэйлиста постоянно обрезается
(https://i.imgur.com/V4n1hDt.png)
Здрасти. А можно сделать что-то типа компактного режима? Пикрелейтед.
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=44783.0;attach=54129)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on September 22, 2019, 22:49:24
Magnifier/Увеличительное стекло

прогресс приостановлен


(https://i.imgur.com/6R7zD6i.gif)
  • can avoid bounds (see inside for details)
  • follows pointer (but can be modified to resemble the one in the Skin Editor)
  • scroll to zoom
  • can't be moved to other projects (script needs fixing)
    project updated with debug values
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on September 29, 2019, 20:27:50
Zoomable Waveform/Масштабируемая форма волны

(https://i.imgur.com/UbHFP3Y.gif)
  • прокрутка колеса мыши - увеличить/уменьшить
  • ПКМ по ползунку - минимум
  • ПКМ по кнопке "-" - минимум
  • ПКМ по кнопке "+" - максимум
It would be nice if the next version had these features!
1. Visualization of the waveform of the track in execution and of the following trace, of large dimensions as well as possibility of zooming of the waveform;
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on October 01, 2019, 21:28:32
Effects/Эффекты
сделано с Обработка событий, ScriptableEventHandler (https://www.aimp.ru/forum/index.php?topic=61370.msg379395#msg379395)
(https://i.imgur.com/ytpif84.gif)
Есть ли способ отслеживать прирост и убывание значения X и переворачивать анимацию по горизонтали на основе этого?
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Offworld on October 16, 2019, 12:37:13
Random Artwork/Случайная обложка
автоматическая подмена отсутствующей обложки случайным изображением из менеджера ресурсов
(https://s8.hostingkartinok.com/uploads/images/2019/10/acf8b3d84da5dfc743e3c70bcff333af.gif)
*скрипт не определяет наличие обложки, он просто загружает изображения под оригинал (если есть). В ином случае требуется дополнительный скрипт (хотя я не вижу причины для этого).
- Custom image for background of top header is possible ? Or if is too long or difficult, more choice of background. But i like actual girls.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: svist0plas on November 25, 2019, 17:23:23
Реализация отображения/скрытия любого элемента, при наведении на какую либо область или кнопку без использования контейнера. Может кому пригодится  ;)
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=60669)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: D2NP on March 18, 2020, 19:02:33
Плавное изменение прозрачности элемента с помощью таймера

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=60475)

Скачать (https://www.aimp.ru/forum/index.php?action=dlattach;topic=27831.0;attach=54662), пост  (https://www.aimp.ru/forum/index.php?topic=27831.msg373353#msg373353)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: disco-groove on April 03, 2020, 18:19:48
Hi, can this function be changed so that when you reach point "B" the playback goes to the next track?
Also, can points "A" and "B" be stored for each track?
Thanks
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: disco-groove on August 21, 2021, 18:03:34
Potrei sapere chi ha fatto questo progetto?
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on October 03, 2021, 16:08:29
Пример использования новых элементов AIMP5 и немного "хитрого"  биндинга.
Может пригодиться в пользовательских диалогах настройки скинов (кастомизации). Так, без лишних контролов, можно изменять любые параметры элементов одним кликом по метке или графической миниатюре.

Работает только в AIMP5.0.2330 и SE5.00.1215 и выше!
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: TurboDISCO Adept on October 04, 2021, 19:54:33
Пример использования новых элементов AIMP5 и немного "хитрого"  биндинга.
Спасибо. Думаю пригодится, как начну переходить на 5-ю версию...
(Сейчас пока даже свой домашний скин забросил на время: ввиду потери основной работы, вынужден перейти на арты и рисование и целыми днями заниматься ими...)
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Lex Xie on September 18, 2022, 22:43:22
Этот эффект в своих скина я назвал "Радугой", использовался для подсветки индикаторов в УМ.
В данном примере панель меняет циклически свой цвет, проходя все оттенки цветового круга.
Code: [Select]
procedure Execute(var State: Integer);
begin
  FindObject('Panel').Set('Color', HSLToColor(State / 360, 1, 0.5))
end;
Таймер с периодом 100 мс подключен к скриптовому счётчику с модулем 360.
Весь цикл при этом занимает 36 с. Кому-то, возможно, это покажется слишком долго, тогда можно уменьшить модуль счёткика.

В этом примере модуль = 36
Code: [Select]
procedure Execute(var State: Integer);
const
  Step = 10;
 
begin
  FindObject('Panel').Set('Color', HSLToColor(State * Step / 360, 1, 0.5))
end;

Hi Black_AVP,

Good day.
Sorry that i have question again and need your help..

Basically i was to create a "TASEAnimator", but there are too many frames that they cannot be saved as all-in-one picture.
So i imitate the Rainbow_Color's counter&timer, i thought the texture should changing every 100msc but nothing happend...
Could you please kingly give some advise?Thanks.


I defined the problem and now the counter&timer can play frmaes accordingly, but when the state change from max to 0, there is a standstill obviously...Is there any way to make the frames loop seamlessly?

And here is the smaller test project file,please kindly check.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on September 19, 2022, 20:28:05
https://www.aimp.ru/forum/index.php?topic=27831.msg425981#msg425981
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 04:01:55
Давно мозг сверлила мысль: а как бы разделить регулировку громкости на два регулятора, что имеет место быть в некоторых магнитофонных скинах.
Разделить-то ума хватило, может и коряво,
Code: [Select]
procedure Execute(var State: Integer);
var
  Vol, Bal: TComponent;
  VL, VR: Integer;
 
begin
  Vol:= FindObject('prvVolume');
  Bal:= FindObject('prvBalance');
  VL:= FindObject('VolumeLeftCounter').Get('Position');
  VR:= FindObject('VolumeRightCounter').Get('Position');
  Bal.Set('Position', Round(VR-VL)/100);
  If VL > VR then
  begin
  Vol.Set('Position',(VL/100))
  end
  else
  begin
  Vol.Set('Position',(VR/100))
  end
end;
но вот как организовать "обратную связь", чтобы положение ползунков соответствовало состоянию prvVolume и prvBalance, регулируемыми штатными средствами?  :-\
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 10:45:18
Давно мозг сверлила мысль: а как бы разделить регулировку громкости на два регулятора ...
Молодец! +1

... но вот как организовать "обратную связь", чтобы положение ползунков соответствовало состоянию prvVolume и prvBalance, регулируемыми штатными средствами?  :-\
Завести связи с prvVolume.Progress и prvBalance.Progress на тот же коммутатор, только надо модуль срипт. счётчика увеличить воизбежание недоразумений при суммировании.
Это просто заблокирует действия пользователя при попытках изменить громкость и баланс. Скрипт немного причесал.
Собственно, самих регуляторов громкости и баланса в скине может и не быть, в примере оставлены для наглядности.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 11:46:06
Молодец! +1
Завести связи с prvVolume.Progress и prvBalance.Progress на тот же коммутатор, только надо модуль срипт. счётчика увеличить воизбежание недоразумений при суммировании.
Это просто заблокирует действия пользователя при попытках изменить громкость и баланс. Скрипт немного причесал.
Собственно, самих регуляторов громкости и баланса в скине может и не быть, в примере оставлены для наглядности.
Спасибо за "причёску".
О варианте с блокировкой я думал, но это не выход, поскольку главным регулятором громкости в скинах является скролл, сомневаюсь, что кто-то из пользователей ищет на скине графический регулятор, мышь им в руки. Поэтому мне нужно найти способ записи в счётчики регуляторов правого и левого каналов значений, рассчитанных на основе данных из prvBalance и prvVolume. Вот как эти значения пересчитать, моих математических способностей и не хватает  ???
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 12:05:47
Не совсем понял. Общий скролл громкости от мыши тоже блокирован, на слайдерах Л и П он работает.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 12:40:28
Не совсем понял. Общий скролл громкости от мыши тоже блокирован, на слайдерах Л и П он работает.
Вариант с блокировкой неприемлем, поскольку, как я думаю, громкость чаще всего регулируют именно скроллом. Мне нужно положения графических регуляторов (точнее, счётчиков, с ними связанных) синхронизировать со значениями баланса и громкости, изменяемых сторонним воздействием. Ладно, буду ломать мозг дальше...
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 13:14:38
Вариант с блокировкой неприемлем, поскольку, как я думаю, громкость чаще всего регулируют именно скроллом.
А, по-моему, для реального аппарата, где два раздельных регулятора, самое то. Для скинов Hi-Fi тематики это вполне приемлимо, зачем тогда изображать эти регуляторы, если их никто не будет таскать мышкой.
Если ты хочешь скроллом регулировать общую громкость, то надо ещё обрабатывать и такие ситуации, когда в одном из каналов уровень упрётся в максимум, а во втором будет меньше, баланс тоже надо соблюдать.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 13:43:39
А, по-моему, для реального аппарата, где два раздельных регулятора, самое то. Для скинов Hi-Fi тематики это вполне приемлимо, зачем тогда изображать эти регуляторы, если их никто не будет таскать мышкой.
Логично, но предвижу жалобы, что скролл на громкость не работает. С балансом, понятное дело таких проблем не должно быть, однако надо быть последовательным.
Если ты хочешь скроллом регулировать общую громкость, то надо ещё обрабатывать и такие ситуации, когда в одном из каналов уровень упрётся в максимум, а во втором будет меньше, баланс тоже надо соблюдать.
Вариант с непараллельной громкостью не проблема, уровень доходит до 100% в канале с большей громкостью и всё. Этот вариант и на биндинге можно реализовать, мысли есть.
Загвоздка с балансом: не могу придумать логичную формулу преобразования для передачи в счётчики, надеялся на твою помощь.
Там ещё затык, что при уменьшении громкости до нуля в канале с большей громкостью, расчётное значение для второго уходит в минус, значит нужны промежуточные счётчики, с поднятыми на сотню значениями. Костыли...
Но, как говорится: "Назвался грузчиком, - полезай в кузов"  ;D
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: gr-e on December 22, 2024, 14:04:08
Давно мозг сверлила мысль: а как бы разделить регулировку громкости на два регулятора, что имеет место быть в некоторых магнитофонных скинах.
Разделить-то ума хватило, может и коряво,
но вот как организовать "обратную связь", чтобы положение ползунков соответствовало состоянию prvVolume и prvBalance, регулируемыми штатными средствами?  :-\
Расчет громкости и баланса немного поправил, там получалось, что ползунок левого канала немного менял громкость и в правом канале (и наоборот). Но при логарифмической громкости всё равно будет работать не совсем корректно.

Добавил расчет значения счетчиков, блокировку от зацикливания сделал на таймерах - вроде работает.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 14:14:04
Логично, но предвижу жалобы, что скролл на громкость не работает.
Ну, никто же не жалуется, что та же перемотка от клавиатуры не работает.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 14:25:47
Расчет громкости и баланса немного поправил, там получалось, что ползунок левого канала немного менял громкость и в правом канале (и наоборот). Но при логарифмической громкости всё равно будет работать не совсем корректно.

Добавил расчет значения счетчиков, блокировку от зацикливания сделал на таймерах - вроде работает.
Спасибо! Принцип, насколько я успел понять, совсем иной. Буду вникать.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 14:29:22
Ну, никто же не жалуется, что та же перемотка от клавиатуры не работает.
А должна?
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 14:34:49
Хот-кеи по умолчанию Ctrl+Стрелки. Сам трек перематывается, бобины не крутятся.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: gr-e on December 22, 2024, 14:47:01
Спасибо! Принцип, насколько я успел понять, совсем иной. Буду вникать.
Есть еще вариант без таймеров - разделить каждый слайдер на два слайдера: прозрачный, который будет управлять громкостью и балансом, а под ним видимый, но недоступный пользователю, для "обратной связи". Но там свои загвоздки могут быть.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 15:15:03
Есть еще вариант без таймеров - разделить каждый слайдер на два слайдера: прозрачный, который будет управлять громкостью и балансом, а под ним видимый, но недоступный пользователю, для "обратной связи". Но там свои загвоздки могут быть.
Пока только одна загвоздка: при переключении на скин с раздельной регулировкой громкости из любого другого, положения слайдеров соответствуют скриптам, а фактические громкость и баланс - настройкам предыдущего скина, пока не сдвинешь како-либо из слайдеров. Думаю, в OnLoadedScript надо прописать что-то типа обновления этих данных...
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 15:19:55
Хот-кеи по умолчанию Ctrl+Стрелки. Сам трек перематывается, бобины не крутятся.
Да, есть такой косяк. Правда, я хоткеями пользуюсь крайне редко (в основном включение/выключение шаффла), о перемотке даже не помышлял, за ненадобностью.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: Black_AVP_Bim on December 22, 2024, 18:34:29
Да, есть такой косяк.
Это не косяк, а невозможность реализовать  такое поведение. Я когда-то предлагал сделать что-то типа KeyHandler, чтоб скин мог обрабатывать хоткеи, но той темы уже нет.

Правда, я хоткеями пользуюсь крайне редко (в основном включение/выключение шаффла)...
А кто-то, наверное, только ими и пользуется. Я, вот, регулировкой громкости ни в плеере, ни в системе не пользуюсь, только в усилителе мощности, пультом, поскольку только там тонкомпенсация может работать правильно.

... о перемотке даже не помышлял, за ненадобностью.
А зачем тогда вообще надо было реализовывать перемотку? А если дальше рассуждать, то тогда зачем изобретать подобные скины? Поставь обои на рабочий стол со всякой аудиотехникой, запусти плеер с дефолтным скином - то же самое удовольствие получишь.
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 18:53:55
А зачем тогда вообще надо было реализовывать перемотку? А если дальше рассуждать, то тогда зачем изобретать подобные скины? Поставь обои на рабочий стол со всякой аудиотехникой, запусти плеер с дефолтным скином - то же самое удовольствие получишь.
Нет, в имитаторах главная фишка в ответной реакции на твои действия. Поэтому всякие анимашки юзеру в радость, и чем больше фич, имитирующих поведение реального аппарата, тем прикольнее! Вот я в новом своём скине и извращаюсь (надеюсь, к Новому году успею).
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: gr-e on December 22, 2024, 19:34:15
Думаю, в OnLoadedScript надо прописать что-то типа обновления этих данных...
Поправил
Title: Re: Нехитрые полезности и идеи для создателей скинов
Post by: McClaud on December 22, 2024, 20:16:45
Поправил
Вот это Супер!
Спасибо, мил человек, от меня свечка в карму при каждом удобном случае!