Помогите создать экшн / кастом экшн / скрипт (5 онлайн)

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
и хотите, не снимая руки с аккорда, чтоб звук (плавно или моментально) перешёл на совсем другой VSTi инструмент. При этом, для экономии ресурса, нужно тот VSTi и всю обработку после него, с которого вы ушли, увести в байпас.
Про это автор ни слова не сказал :) Изначально вопрос был поставлен про простую автоматизацию экшнов. Поделитесь тогда этим JS в виде кода или ссылки, если ему это подойдет. И тогда с неким описанием, во всяком случае до конца я еще не понял, что надо с этим плагином делать
 
  • Like
Реакции: Archie's

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
Про это автор ни слова не сказал :) Изначально вопрос был поставлен про простую автоматизацию экшнов.
Он в общем мало что сказал.... :) И что ему нужно, он поймёт после того как попробует это реализовать.
А я уже всё попробовал и знаю.
 
  • Like
Реакции: Archie's

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
Подскажите, пожалуйста, можно ли сварганить некий скрипт, который бы активировал конкретный тулбар (1,2....n) и позиционировал его в top main of window.

PS. Будет даже достаточно скрипта, который наводит фокус на тулбар, который в данный момент в top main of window.
 
Последнее редактирование:

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
@Supa75, Toolbars: Switch to toolbar (1,2....n)
это мы умеем. Мне нужно, чтобы переключался тулбар именно в top main of window.
Если к примеру, у меня сейчас активирован main toolbar, то команда switch переключит тулбар, который расположен в области main toolbar, а мне нужно, чтобы вне зависимости от текущей активности тулбара, скриптом менялся тулбар, расположенный в top main of window
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@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

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
не работает. При разовом срабатывании экшена он в позиции top main of window переключает любой находящийя там тулбар на main toolbar. Далее при нажатии Run ничего не происходит.

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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
не работает. При разовом срабатывании экшена он в позиции top main of window переключает любой находящийя там тулбар на main toolbar. Далее при нажатии Run ничего не происходит.
Screenshot_1.png
переключает любой находящийя там тулбар на main toolbar
Потому что стоит значение -1, ставим значение 1 переключится на первый тулбар,ставим значение 2 переключится на второй тулбар, и т.д.
Создаешь 17 копий скрипта и в каждом ставишь нужное значение и будет отдельный скрипт для каждого тулбара.
 
Последнее редактирование:

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
разобрался как работать со скриптом. нет, сори, это не то. Данный скрипт позволяет переключать активный тулбар также, как это делает команда Switch toolbar.
А если тулбар не активный, то экшн не работает.
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@Supa75, В смысле не активный? Сделайте пожалуйста гифку.
У меня все работает, закрываю верхний тулбар, запускаю скрипт и все активируется,
22322234212.gif
 
Последнее редактирование:

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
В смысле не активный? Сделайте пожалуйста гифку.
не могу сейчас сделать гифку. Если ни один тулбар не активный (= не в фокусе), то скрипт работает правильно (также как у Вас в гифке). Стоит только мне нажать любую кнопку в main toolbar и после этого запустить скрипт, то тулбар переключится в позиции main toolbar, а не в позиции top main of window.
Попробуйте сами нажать например на кнопку LOCK в main toolbar и после этого запустить скрипт.
 
Последнее редактирование:
  • Like
Реакции: Archie's

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@Supa75, Поискал-поискал, не нашел, как снять фокус с активного тулбара.Может кто другой сможет сделать.
 
Последнее редактирование:

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
Помню, что где-то встречал нечто подобное, но не могу сейчас найти.
Нужны три скрипта. Плиз сделайте если не сложно:
1-й: Дописывает к имени выделенного трека "_ARСHIVE"
2-й: Убирает с конца имени выделенных треков 8 символов (это как раз вот эти 8 символов _ARCHIVE)
3-й: Выделяет треки, у которых в названии есть _ARCHIVE
 

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
Убирает 8 любых символов или именно если эти символы "_ARCHIVE"
любые. Было бы не плохо, чтобы я в скрипте сам смог со временем подправить кол-во символов, которые необходимо убрать с конца имени трека
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Проверяй! То?
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

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
супер. Самое ОНО!!!
[DOUBLEPOST=1538555533][/DOUBLEPOST]Тут такая идея шальная в голову влетела. Правда боюсь нереализуемая, но все же спрошу.
Было бы круто иметь возможность использовать модификаторы SHIFT/CTRL, чтобы вызывать вторые экшены, которые расположены на кнопке в тулбаре.
Например, у меня на некую кнопку в тулбаре назначено вызов трек-темплейта.
Было бы круто, если бы при нажатии на ту же кнопку мышкой одновременно с зажатым CTRL исполнялся экшн по вставке в инсерт VSTi.
Т.е. по сути на одну кнопку в тулбаре можно было бы назначить разные экшены (один - обычный клик, второй - при клике с модификатором).
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@Supa75, это можно исполнить. Но одним целым скриптом-тулбаром, который будет независим от штатного. Там можно что угодно сделать, любой вызов команды по любым модификаторам мыши. Даже выпадающее меню по кнопке. Но вот само создание кнопок нужно как-то упростить опять же методом скрипта. Чтобы он допустим использовал всевозможные toolbar icons с их размером 30х30. При создании же кнопок недостаточно будет открыть экшн лист - придется будет вписывать ID экшна в окошко.
 

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@Supa75, это можно исполнить. Но одним целым скриптом-тулбаром, который будет независим от штатного. Там можно что угодно сделать, любой вызов команды по любым модификаторам мыши. Даже выпадающее меню по кнопке. Но вот само создание кнопок нужно как-то упростить опять же методом скрипта. Чтобы он допустим использовал всевозможные toolbar icons с их размером 30х30. При создании же кнопок недостаточно будет открыть экшн лист - придется будет вписывать ID экшна в окошко.
Сорриииии.... А что скрипт будет знать как его включили??????
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@Maestro Sound, скрипт может включаться автоматом с запуском рипера и быть запущен. При этом он вызывает команды по ID. Все это возможно, реализацию кастомных кнопок ты можешь уже посмотреть в скриптах Heda (почти в любой он это добавлял). Насчет toggle состояния экшна, вроде бы это также возможно, то есть чтобы скрипт понимал что экшн из экшн-листа запущен
 

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@borisuperful, Просто вопрос: Сможет ли скрипт знать с каким сочетанием клавиш его запустили? И какой вариант роботы ему запускать ? С клавишей Ctrl одно действие с Alt другое
 

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@Aleksandr Oleynik, Вот бы не плохо создать скрипт бланк для Shift, Ctrl,Alt самому на каждый вариант вставлять ключи своих скриптов
 

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
А что скрипт будет знать как его включили??????
тут наверное должен быть другой скрипт, который постоянно включен и в зависимости от включенного модификатора и клика мыши в конкретном месте тулбара запускает тот или иной экшн. Мы ведь уже давно можем применять команды "under mouse", применимые к аранжу или ТCP/МСP. Здесь речь о чем-то аналогичном, что может применяться к toolbar
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
ут наверное должен быть другой скрипт, который постоянно включен и в зависимости от включенного модификатора и клика мыши в конкретном месте тулбара запускает тот или иной экшн.
Естественно, чтоб скрипт что-то понимал, он должен быть включён.
Хотя можно попробовать и запустить скрипт с Shift, Ctrl,Alt и прописать распознование при инициализации - может и прокатит.
 
  • Like
Реакции: Archie's и Maestro Sound

YuriOl

Well-Known Member
6 Май 2005
1.060
590
113
55
Луганск
youtube.com
Ребята, который раз сталкиваюсь с нужной мне фичей, которую к сожалению пока не нашёл как реализовать, а очень бы хотелось! Очень часто мне приходится с этим сталкиваться. Есть у Михаила хороший скрипт - Script: mpl_Quantize selected MIDI notes ends, всё в нём хорошо, кроме того, что выравнивание конца нот происходит всегда в плюс, а мне надо например чтобы до ближайшей сетки, - в данном случае получается наоборот в минус. Михаил Video Reaper.gif Может есть такой скрипт? Скрипт Quantize notes position and end to grid работает с окончаниями нот как мне надо, но он ровняет и начальную позицию, что мне не всегда надо.
 
Последнее редактирование:

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Последнее редактирование:
  • Like
Реакции: YuriOl и Supa75

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
А можно скрипт с перемещением выделенного итема, на трек с определенным названием n?
по примере свежеиспеченного X-Raym_Move selected items up to the top visible track.lua
 
Последнее редактирование:

Сейчас онлайн (Пользователей: 0, Гостей: 5)