Помогите создать экшн / кастом экшн / скрипт

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
и хотите, не снимая руки с аккорда, чтоб звук (плавно или моментально) перешёл на совсем другой VSTi инструмент. При этом, для экономии ресурса, нужно тот VSTi и всю обработку после него, с которого вы ушли, увести в байпас.
Про это автор ни слова не сказал :) Изначально вопрос был поставлен про простую автоматизацию экшнов. Поделитесь тогда этим JS в виде кода или ссылки, если ему это подойдет. И тогда с неким описанием, во всяком случае до конца я еще не понял, что надо с этим плагином делать
 
  • Like
Реакции: Archie's
Про это автор ни слова не сказал :) Изначально вопрос был поставлен про простую автоматизацию экшнов.
Он в общем мало что сказал.... :) И что ему нужно, он поймёт после того как попробует это реализовать.
А я уже всё попробовал и знаю.
 
  • Like
Реакции: Archie's
Подскажите, пожалуйста, можно ли сварганить некий скрипт, который бы активировал конкретный тулбар (1,2....n) и позиционировал его в top main of window.

PS. Будет даже достаточно скрипта, который наводит фокус на тулбар, который в данный момент в top main of window.
 
Последнее редактирование:
@Supa75, Toolbars: Switch to toolbar (1,2....n)
это мы умеем. Мне нужно, чтобы переключался тулбар именно в top main of window.
Если к примеру, у меня сейчас активирован main toolbar, то команда switch переключит тулбар, который расположен в области main toolbar, а мне нужно, чтобы вне зависимости от текущей активности тулбара, скриптом менялся тулбар, расположенный в top main of window
 
@Supa75, Проверяй.
Код:
                    --toolbar = (1,2...16), -1 = main
    local toolbar = -1
    -------------------
  
  
    local command = {[-1] = 41646,41105,41106,41107,41108,41647,41648,
                      41649,41650,41948,41949,
               41950,41951,41952,41953,41954,41955}
  
    if not toolbar then toolbar = -1 end
    local Tog = reaper.GetToggleCommandState(41297)
    if Tog == 0 then
         reaper.Main_OnCommand(41297, 0 )
         reaper.Main_OnCommand(command[toolbar],0)
    else
         reaper.Main_OnCommand(command[toolbar],0)
    end

    local function NoUndo() end
    reaper.defer(NoUndo)
 
Последнее редактирование:
  • Like
Реакции: Aleksandr Oleynik
не работает. При разовом срабатывании экшена он в позиции top main of window переключает любой находящийя там тулбар на main toolbar. Далее при нажатии Run ничего не происходит.

Я в предыдущем посте написал, мне даже лучше будет всего лишь получить скрипт, который активирует GUI того тулбара, который в данный момент находится в позиции top main of window. Все остальное я допилю стандартными экшенами с Switch
 
не работает. При разовом срабатывании экшена он в позиции top main of window переключает любой находящийя там тулбар на main toolbar. Далее при нажатии Run ничего не происходит.

Screenshot_1.png
переключает любой находящийя там тулбар на main toolbar
Потому что стоит значение -1, ставим значение 1 переключится на первый тулбар,ставим значение 2 переключится на второй тулбар, и т.д.
Создаешь 17 копий скрипта и в каждом ставишь нужное значение и будет отдельный скрипт для каждого тулбара.
 
Последнее редактирование:
разобрался как работать со скриптом. нет, сори, это не то. Данный скрипт позволяет переключать активный тулбар также, как это делает команда Switch toolbar.
А если тулбар не активный, то экшн не работает.
 
@Supa75, В смысле не активный? Сделайте пожалуйста гифку.
У меня все работает, закрываю верхний тулбар, запускаю скрипт и все активируется,
22322234212.gif
 
Последнее редактирование:
В смысле не активный? Сделайте пожалуйста гифку.
не могу сейчас сделать гифку. Если ни один тулбар не активный (= не в фокусе), то скрипт работает правильно (также как у Вас в гифке). Стоит только мне нажать любую кнопку в main toolbar и после этого запустить скрипт, то тулбар переключится в позиции main toolbar, а не в позиции top main of window.
Попробуйте сами нажать например на кнопку LOCK в main toolbar и после этого запустить скрипт.
 
Последнее редактирование:
  • Like
Реакции: Archie's
@Supa75, Поискал-поискал, не нашел, как снять фокус с активного тулбара.Может кто другой сможет сделать.
 
Последнее редактирование:
Помню, что где-то встречал нечто подобное, но не могу сейчас найти.
Нужны три скрипта. Плиз сделайте если не сложно:
1-й: Дописывает к имени выделенного трека "_ARСHIVE"
2-й: Убирает с конца имени выделенных треков 8 символов (это как раз вот эти 8 символов _ARCHIVE)
3-й: Выделяет треки, у которых в названии есть _ARCHIVE
 
Убирает 8 любых символов или именно если эти символы "_ARCHIVE"
любые. Было бы не плохо, чтобы я в скрипте сам смог со временем подправить кол-во символов, которые необходимо убрать с конца имени трека
 
Проверяй! То?
https://drive.google.com/open?id=11Pb0NYJquCDxzYCy8v_haHsHmYHM_dLX

PHP:
    --Дописывает к имени выделенного трека "_ARСHIVE"


    local AddToNameOfTrack = "_ARCHIVE"



    -----------------------------------------------------------------------------
    local function No_Undo()end; local function no_undo()reaper.defer(No_Undo)end
    -----------------------------------------------------------------------------



    local CountSelTrack = reaper.CountSelectedTracks( 0 )
    if CountSelTrack == 0 then no_undo()return end

    if not AddToNameOfTrack then AddToNameOfTrack = "" end
    for i = CountSelTrack-1,0,-1 do
        local SelTrack = reaper.GetSelectedTrack( 0, i )
        local _,name = reaper.GetSetMediaTrackInfo_String(SelTrack,"P_NAME","",0)
        if not name:match(AddToNameOfTrack)then
            reaper.GetSetMediaTrackInfo_String(SelTrack,"P_NAME",name..AddToNameOfTrack,1)
        end
    end
    no_undo()
https://drive.google.com/open?id=1wOVlB44Vx9Wl4msFb9WCKYosKEpu69yh

PHP:
    --Убирает с конца имени выделенных треков n символов
    -- Пробел тоже символ

    local CountEndRemove = 8


    -----------------------------------------------------------------------------
    local function No_Undo()end; local function no_undo()reaper.defer(No_Undo)end
    -----------------------------------------------------------------------------



    local CountSelTrack = reaper.CountSelectedTracks(0)
    if CountSelTrack == 0 then no_undo()return end
    if not CountEndRemove then CountEndRemove = 1 end
    for i = CountSelTrack-1,0,-1 do
        local SelTrack = reaper.GetSelectedTrack(0,i)
        local _,name = reaper.GetSetMediaTrackInfo_String(SelTrack,"P_NAME","",0)
        if name ~= "" then
            local len = string.len(name)
            if len >= CountEndRemove then
                local name = string.match(string.reverse(name),".+",CountEndRemove+1)
                if not name then name = "" end
                local name = string.reverse(name)
                reaper.GetSetMediaTrackInfo_String( SelTrack, "P_NAME", name, 1 )
            end
        end
    end
https://drive.google.com/open?id=1MInWHaW9dE1CsHxEdqeSGD4SHUEF11iK

PHP:
    --Выделяет треки, у которых в названии есть _ARCHIVE


    local EndOfTrackContains = "_ARCHIVE"


    -----------------------------------------------------------------------------
    local function No_Undo()end; local function no_undo()reaper.defer(No_Undo)end
    -----------------------------------------------------------------------------



    local CountTrack = reaper.CountTracks( 0 )
    if CountTrack == 0 then no_undo()return end

    if not EndOfTrackContains then EndOfTrackContains = "{$[(*)]*[}{(*)]$}" end
    for i = 1,CountTrack do
        local Track = reaper.GetTrack( 0, i-1 )
        local retval, buf = reaper.GetTrackName( Track, "" )
        if buf:match(EndOfTrackContains)then
            reaper.SetTrackSelected(Track,1)
        end
    end
    no_undo()
 
Последнее редактирование:
  • Like
Реакции: Supa75
супер. Самое ОНО!!!
[DOUBLEPOST=1538555533][/DOUBLEPOST]Тут такая идея шальная в голову влетела. Правда боюсь нереализуемая, но все же спрошу.
Было бы круто иметь возможность использовать модификаторы SHIFT/CTRL, чтобы вызывать вторые экшены, которые расположены на кнопке в тулбаре.
Например, у меня на некую кнопку в тулбаре назначено вызов трек-темплейта.
Было бы круто, если бы при нажатии на ту же кнопку мышкой одновременно с зажатым CTRL исполнялся экшн по вставке в инсерт VSTi.
Т.е. по сути на одну кнопку в тулбаре можно было бы назначить разные экшены (один - обычный клик, второй - при клике с модификатором).
 
@Supa75, это можно исполнить. Но одним целым скриптом-тулбаром, который будет независим от штатного. Там можно что угодно сделать, любой вызов команды по любым модификаторам мыши. Даже выпадающее меню по кнопке. Но вот само создание кнопок нужно как-то упростить опять же методом скрипта. Чтобы он допустим использовал всевозможные toolbar icons с их размером 30х30. При создании же кнопок недостаточно будет открыть экшн лист - придется будет вписывать ID экшна в окошко.
 
@Supa75, это можно исполнить. Но одним целым скриптом-тулбаром, который будет независим от штатного. Там можно что угодно сделать, любой вызов команды по любым модификаторам мыши. Даже выпадающее меню по кнопке. Но вот само создание кнопок нужно как-то упростить опять же методом скрипта. Чтобы он допустим использовал всевозможные toolbar icons с их размером 30х30. При создании же кнопок недостаточно будет открыть экшн лист - придется будет вписывать ID экшна в окошко.
Сорриииии.... А что скрипт будет знать как его включили??????
 
@Maestro Sound, скрипт может включаться автоматом с запуском рипера и быть запущен. При этом он вызывает команды по ID. Все это возможно, реализацию кастомных кнопок ты можешь уже посмотреть в скриптах Heda (почти в любой он это добавлял). Насчет toggle состояния экшна, вроде бы это также возможно, то есть чтобы скрипт понимал что экшн из экшн-листа запущен
 
@borisuperful, Просто вопрос: Сможет ли скрипт знать с каким сочетанием клавиш его запустили? И какой вариант роботы ему запускать ? С клавишей Ctrl одно действие с Alt другое
 
А что скрипт будет знать как его включили??????
тут наверное должен быть другой скрипт, который постоянно включен и в зависимости от включенного модификатора и клика мыши в конкретном месте тулбара запускает тот или иной экшн. Мы ведь уже давно можем применять команды "under mouse", применимые к аранжу или ТCP/МСP. Здесь речь о чем-то аналогичном, что может применяться к toolbar
 
ут наверное должен быть другой скрипт, который постоянно включен и в зависимости от включенного модификатора и клика мыши в конкретном месте тулбара запускает тот или иной экшн.
Естественно, чтоб скрипт что-то понимал, он должен быть включён.
Хотя можно попробовать и запустить скрипт с Shift, Ctrl,Alt и прописать распознование при инициализации - может и прокатит.
 
  • Like
Реакции: Archie's и Maestro Sound
Ребята, который раз сталкиваюсь с нужной мне фичей, которую к сожалению пока не нашёл как реализовать, а очень бы хотелось! Очень часто мне приходится с этим сталкиваться. Есть у Михаила хороший скрипт - Script: mpl_Quantize selected MIDI notes ends, всё в нём хорошо, кроме того, что выравнивание конца нот происходит всегда в плюс, а мне надо например чтобы до ближайшей сетки, - в данном случае получается наоборот в минус. Михаил Video Reaper.gif Может есть такой скрипт? Скрипт Quantize notes position and end to grid работает с окончаниями нот как мне надо, но он ровняет и начальную позицию, что мне не всегда надо.
 
Последнее редактирование:
Последнее редактирование:
  • Like
Реакции: YuriOl и Supa75
А можно скрипт с перемещением выделенного итема, на трек с определенным названием n?
по примере свежеиспеченного X-Raym_Move selected items up to the top visible track.lua
 
Последнее редактирование:

Сейчас просматривают