Как создать для Reaper кнопку с меняющимся цветом и назначить её на скрипт.

    Хотите создать кнопку для Reaper которая меняет свой цвет в зависимости от статуса (off/on), наподобие кнопок Solo, Mute?
Это возможно.

    Если вы работаете в программе Reaper, то одной из её особенностей является возможность создания собственных экшенов, циклов, скриптов расширяющих её функциональные возможности.
Также вы можете создать собственную кнопку и назначить её на нужный вам экшен, цикл или скрипт.
Такую кнопку можно разместить в одном из тулбаров Reaper.

Кнопка

    Кнопку удобно создавать в одном из графических редакторов. Рекомендую безплатный Gimp. Размер кнопки должен быть 90*30 пикселей.
Кнопка состоит из 3-х частей. Цветовой фон каждой части удобно сделать разными цветами.
Цвета будут менятся в зависимости от статуса скрипта (Off/On).

Прилагаю уже готовые 16 кнопок и файл проэкта toolbar icons to Reaper.xcf созданный в Gimp. toolbar_icons_1-16.zip
    Если в вашем случае удобней поменять цвета правой и левой части кнопок, либо вы хотите иметь другой фоновый цвет то можете открыть проэкт «toolbar icons to Reaper.xcf» и сделать это в Gimp, сделав потом новые экспорты нужных вам кнопок.
Готовые кнопки копируются в папку toolbar_icons. В моём случае путь к папке такой
C:\Users\Andrey\AppData\Roaming\REAPER\Data\toolbar_icons
    Папка AppData является скрытой. Поэтому чтобы её увидеть - нужно в файловом менеджере которым вы пользуетесь выбрать команду «показать скрытые папки».
Рекомендую безплатный файловый менеджер FreeCommander XE.
    Для того чтобы кнопка в тулбаре была большой в настройках Reaper Options > Preferences > Appearance снимите галочки с опций Don’t scale toolbar buttons below 1:1/Don’t scale toolbar buttons above 1:1 (ограничивать ли размер кнопок на панели инструментов).
Если эти опции отмечены при изменении размеров главной или плавающей панели инструментов кнопки не будут становиться меньше или больше.

Скрипт

    Скрипт который активирует кнопку назначенную на запуск данного скрипта имеет два статуса (Off/On) и расширение .ееl

Main_OnCommand(NamedCommandLookup("_S&M_CYCLACTION_1"), 0);
get_action_context(#fn, sec, cmd);
state = GetToggleCommandStateEx(sec, cmd);//Current State
SetToggleCommandState(sec, cmd, state <= 0 ? 1 : 0);//Change State (ON/OFF)
RefreshToolbar2(sec, cmd);


В первой строке скрипта вы видите команду запуска цикла 1.
В следующих строках команды смены статуса (ON/OFF)

Цикл

Прежде чем создавать такой скрипт вы должны создать нужный вам цикл в Cycle Action Editor который имеет команду Step (шаг).
Для этого у вас должно быть установленно дополнение к Reaper - SWS/S&M EXTENSION

При первом запуске цикла или нажатии на кнопку выполняются команды до команды Step
При втором запуске цикла или нажатии на кнопку выполняются команды после команды Step
При повторных запусках команды выполняются поочерёдно (до Step и после Step)

Далее посмотрите номер созданного вами цикла в Cycle Action Editor.
Этот номер вставляется в первой строке скрипта после _S&M_CYCLACTION_
Для каждой кнопки создаёте отдельный цикл и отдельный скрипт.
На видео видно как создавать циклы:

Пример

Для плавного изменения громкости на треке 1 в течении 5 секунд был создан скрипт.

Main_OnCommand(NamedCommandLookup("_S&M_CYCLACTION_1"), 0);
get_action_context(#fn, sec, cmd);
state = GetToggleCommandStateEx(sec, cmd);//Current State
SetToggleCommandState(sec, cmd, state <= 0 ? 1 : 0);//Change State (ON/OFF)
RefreshToolbar2(sec, cmd);

Скрипт в первой строке имеет команду запуска цикла.
Цикл имеет номер ID 1 и состоит из следующих команд:
Unselect all items/tracks/env points         (снимается выделение со всего)
Трек: Select track 01                        (выделение трека 1)
Custom: -10 db smoothly                      (пользовательский экшен плавно уменьшающий громкость на 10 db за 1 секунду)
Custom: -10 db smoothly
Custom: -10 db smoothly
Custom: -10 db smoothly
Custom: -10 db smoothly
Unselect all items/tracks/env points         (снимается выделение со всего)
-----Step-----                               (шаг - означает что следующие команды выполняются после второго нажатия кнопки)
Unselect all items/tracks/env points         (снимается выделение со всего)
Трек: Select track 01                        (выделение трека 1)
Custom: +10 db smoothly                      (пользовательский экшен плавно увеличивающий громкость на 10 db за 1 секунду)
Custom: +10 db smoothly
Custom: +10 db smoothly
Custom: +10 db smoothly
Custom: +10 db smoothly  
Unselect all items/tracks/env points         (снимается выделение со всего)

Custom: -10 db smoothly пользовательский экшен плавно уменьшающий громкость на 10 db за 1 секунду состоит из следующих команд:
Xenakios/SWS: Nudge volume of selected tracks down         (уменьшение громкости на 1 db)
Действие: Wait 0.1 seconds перед следующим действием       (задержка на 0,1 секунду перед следующим действием)
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks down
Действие: Wait 0.1 seconds перед следующим действием

Для использования команд Xenakios/SWS у вас должно быть установленно дополнение к Reaper - SWS/S&M EXTENSION

Custom: +10 db smoothly пользовательский экшен плавно увеличивающий громкость на 10 db за 1 секунду состоит из следующих команд:

Xenakios/SWS: Nudge volume of selected tracks down         (уменьшение громкости на 1 db)
Действие: Wait 0.1 seconds перед следующим действием       (задержка на 0,1 секунду перед следующим действием)
XXenakios/SWS: Nudge volume of selected tracks up           (увеличение громкости на 1 db)
Действие: Wait 0.1 seconds перед следующим действием       (задержка на 0,1 секунду перед следующим действием)
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием
Xenakios/SWS: Nudge volume of selected tracks up
Действие: Wait 0.1 seconds перед следующим действием

Как создавать экшены смотрите видео:

Также выполнение скрипта,цикла или экшена можно назначить на горячую клавишу клавиатуры ноутбука или компьютера.

SEO sprint - Всё для максимальной раскрутки!