AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Тема начата: Black_AVP от Декабря 11, 2018, 15:38:24

Название: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 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)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 11, 2018, 15:40:02
Пример работы со цветом. Как с помощью слайдеров изменять раздельно оттенок, насыщенность и прозрачность элементов.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 11, 2018, 15:41:58
Простейшая реализация ColorPicker-а. Может пригодиться в диалогах настройки собственного скина.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 11, 2018, 15:44:44
Многие испытывают трудности с изменением параметров шрифтов. Пример для шрифтов в плейлисте:
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;

Все параметры шрифтов доступны из скриптов, надо только правильно к ним обращаться.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 11, 2018, 15:48:20
Как сбросить все полосы эквалайзера в 0 dB нажатием кнопки.
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).
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Декабря 11, 2018, 15:56:50
Этот эффект в своих скина я назвал "Радугой", использовался для подсветки индикаторов в УМ.
В данном примере панель меняет циклически свой цвет, проходя все оттенки цветового круга.
procedure Execute(var State: Integer);
begin
  FindObject('Panel').Set('Color', HSLToColor(State / 360, 1, 0.5))
end;
Таймер с периодом 100 мс подключен к скриптовому счётчику с модулем 360.
Весь цикл при этом занимает 36 с. Кому-то, возможно, это покажется слишком долго, тогда можно уменьшить модуль счёткика.

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

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

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

Достаточно подключить кнопку к скиптовому счётчику, содержащему следующий код:
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)

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

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

Также на основе этого примера в обложку можно вводить многие текстовые данные, например цвет.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Апреля 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)
Название: Собака
Отправлено: ColorCode от Апреля 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) (жаль не проект)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Мая 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)

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

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

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=27831.0;attach=55772)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Мая 02, 2019, 17:56:43
Выложу и свой вариант TrackPreview, тот, что использую в плейлистах своих скинов.
Название: Re: Визуализация функции Repeat AB
Отправлено: ColorCode от Мая 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)

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

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

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

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

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

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

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=58559)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Августа 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.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Сентября 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 ?
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Сентября 08, 2019, 02:48:00
Font Size Slider/Ползунок размера шрифта
(https://i.imgur.com/WZG6m06.gif)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Сентября 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)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Сентября 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
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Сентября 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;
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Октября 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 и переворачивать анимацию по горизонтали на основе этого?
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Offworld от Октября 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.
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: svist0plas от Ноября 25, 2019, 17:23:23
Реализация отображения/скрытия любого элемента, при наведении на какую либо область или кнопку без использования контейнера. Может кому пригодится  ;)
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=61370.0;attach=60669)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: D2NP от Марта 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)
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: disco-groove от Апреля 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
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: disco-groove от Августа 21, 2021, 18:03:34
Potrei sapere chi ha fatto questo progetto?
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: Black_AVP от Октября 03, 2021, 16:08:29
Пример использования новых элементов AIMP5 и немного "хитрого"  биндинга.
Может пригодиться в пользовательских диалогах настройки скинов (кастомизации). Так, без лишних контролов, можно изменять любые параметры элементов одним кликом по метке или графической миниатюре.

Работает только в AIMP5.0.2330 и SE5.00.1215 и выше!
Название: Re: Нехитрые полезности и идеи для создателей скинов
Отправлено: TurboDISCO Adept от Октября 04, 2021, 19:54:33
Пример использования новых элементов AIMP5 и немного "хитрого"  биндинга.
Спасибо. Думаю пригодится, как начну переходить на 5-ю версию...
(Сейчас пока даже свой домашний скин забросил на время: ввиду потери основной работы, вынужден перейти на арты и рисование и целыми днями заниматься ими...)