Archie-reascript: обсуждение, пожелания, сообщения об ошибках.

Будем считать что 10 часовой трек мы делать не будем, а разобьём его по 5 часов
Все так поступают кто с большими проектами работает.
Дело не в том, кто как работает и поступает, а в том что если человек введет больше 9, то произойдет абра-кадабра.)))
Вот держи:
Первая цифра - это часы​
вторая,третья - это минуты​
четвертая,пятая - это секунды​
и остальные - это миллисекунды​
Но как по мне, то это только запутает и не удобнее.
PHP:
    local
    Previous_input = true;
    
    -------------------------------------------------------
    local function no_undo()reaper.defer(function()end)end;
    -------------------------------------------------------
    
    
    local title = 'Go To Time (time)';
    
    local _,filename,buf;
    
    if Previous_input == true then;
        _,filename,_,_,_,_,_ = reaper.get_action_context();
        filename = filename:match('(.+)[/\\](.+)');
        buf = reaper.GetExtState(filename,title);
    end;
    
    if not buf or buf == '' then;
        --local CurPos = reaper.GetCursorPosition();
       -- buf = reaper.format_timestr_pos(CurPos,'',0);
    end;
    
    --local
    retval,retvals_csv = reaper.GetUserInputs(title,1,'Sec:,extrawidth=25',buf);
    if not retval then no_undo()return end;
    
    
    --[[
    local MSec = retvals_csv:match(                  '(%d+)$')or 0;
    local Sec  = retvals_csv:match(            '(%d+)%D+%d*$')or 0;
    local Min  = retvals_csv:match(      '(%d+)%D+%d*%D+%d*$')or 0;
    local Hour = retvals_csv:match('(%d+)%D+%d*%D+%d*%D+%d*$')or 0;
    --]]
    
    retvals_csv = retvals_csv:gsub('%D','');
    
    Hour = retvals_csv:match('^(%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d)','');
    
    Min = retvals_csv:match('^(%d%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d%d)','');
    
    Sec = retvals_csv:match('^(%d%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d%d)','');
    
    MSec = retvals_csv:match('^(%d*)')or 0
    retvals_csv = retvals_csv:gsub('^(%d*)','');
    
    
   -- Hour,Min,Sec,MSec = retvals_csv:match('(%d)(%d%d)(%d%d)(%d*)');--(%d%d)(%d%d)(%d*)
    
    
    --[
    local time = reaper.parse_timestr_pos(Hour..':'..Min..':'..Sec..'.'..MSec,0);
    reaper.SetEditCurPos(time,true,false);
    
    
    if Previous_input == true then;
      --  reaper.SetExtState(filename,title,retvals_csv,false);
    end;
    
    no_undo();
 
@Archie's, идеально!!! Просто то что надо! Супер!:Dle12::Dle4::Dle23:

"больше 9, то произойдет абра-кадабра" - нет никакой кадабры... Ввёл кучу цифр, всё нормально, а главное быстро - прямо в деле проверяю и кайфую. Проект закончу (немного осталось - благодаря и быстрому набору) пиво с меня!:Dle8:
Спасибо ещё раз!

п. с. "больше 9, то произойдет абра-кадабра" - кажется понял. Если впечатать, с двоеточием, допустим 12:12:123 - то будет какой то крах?
 
Последнее редактирование:
@Archie's, жаль только что эта супеская версия последнего значения не запоминает...:Dle65:
 
Если впечатать, с двоеточием, допустим 12:12:123 - то будет какой то крах?
Ну ты же сам захотел убрать разделители ))

@Archie's, жаль только что эта супеская версия последнего значения не запоминает...:Dle65:

Ой, не заметил. Два тире в начали строки убери вот здесь.
188557
 
Ну ты же сам захотел убрать разделители ))



Ой, не заметил. Два тире в начали строки убери вот здесь.
Посмотреть вложение 188557
Убрал эти два тире, но ничего не изменилось... Но ведь что то должно было измениться? Они же не просто так там стояли?
С другой стороны, последнее значение я и маркером могу отметить... Главное и основное он делает как надо!
 
@smrz1,
PHP:
    local
    Previous_input = true;
    
    -------------------------------------------------------
    local function no_undo()reaper.defer(function()end)end;
    -------------------------------------------------------
    
    
    local title = 'Go To Time (time)';
    
    local _,filename,buf;
    
    if Previous_input == true then;
        _,filename,_,_,_,_,_ = reaper.get_action_context();
        filename = filename:match('(.+)[/\\](.+)');
        buf = reaper.GetExtState(filename,title);
    end;
    
    if not buf or buf == '' then;
        --local CurPos = reaper.GetCursorPosition();
       -- buf = reaper.format_timestr_pos(CurPos,'',0);
    end;
    
    --local
    retval,retvals_csv = reaper.GetUserInputs(title,1,'Sec:,extrawidth=25',buf);
    if not retval then no_undo()return end;
    
    
    --[[
    local MSec = retvals_csv:match(                  '(%d+)$')or 0;
    local Sec  = retvals_csv:match(            '(%d+)%D+%d*$')or 0;
    local Min  = retvals_csv:match(      '(%d+)%D+%d*%D+%d*$')or 0;
    local Hour = retvals_csv:match('(%d+)%D+%d*%D+%d*%D+%d*$')or 0;
    --]]
    
    retvals_csvX = retvals_csv;
    
    retvals_csv = retvals_csv:gsub('%D','');
    
    Hour = retvals_csv:match('^(%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d)','');
    
    Min = retvals_csv:match('^(%d%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d%d)','');
    
    Sec = retvals_csv:match('^(%d%d)')or 0
    retvals_csv = retvals_csv:gsub('^(%d%d)','');
    
    MSec = retvals_csv:match('^(%d*)')or 0
    retvals_csv = retvals_csv:gsub('^(%d*)','');
    
    
   -- Hour,Min,Sec,MSec = retvals_csv:match('(%d)(%d%d)(%d%d)(%d*)');--(%d%d)(%d%d)(%d*)
    
    
    --[
    local time = reaper.parse_timestr_pos(Hour..':'..Min..':'..Sec..'.'..MSec,0);
    reaper.SetEditCurPos(time,true,false);
    
    
    if Previous_input == true then;
        reaper.SetExtState(filename,title,retvals_csvX,false);
    end;
    
    no_undo();
 
Убрал эти два тире, но ничего не изменилось... Но ведь что то должно было измениться? Они же не просто так там стояли?
С другой стороны, последнее значение я и маркером могу отметить... Главное и основное он делает как надо!
Не пойму, что не получается с обычным, который Арчи уже закинул в реапак. Там не надо никаких двоеточий писать. Просто, если надо 5 минут, 10 сек, то любые нецифры работают как знаки препинания, можно просто 5n10u0, если 1 час 5 мин и 10 сек - 1k5k10k0 И там в начале скрипта как раз всё понятно с false и true.
 
Последнее редактирование:
  • Like
Реакции: Archie's
Не пойму, что не получается с обычным, который Арчи уже закинул в реапак. Там не надо никаких двоеточий писать. Просто, если надо 5 минут, 10 сек, то любые нецифры работают как знаки препинания, можно просто 5n10u0. И там в начале скрипта как раз всё понятно с false и true.
Вот этого мне как раз и не надо - это уже будет "не быстрый" набор. Что двоеточии, что буквы между цифрами - без разницы. Надо было (как и стало) что бы было быстро и всё.
 
@Archie's, всё! Теперь полый комплект. Все работает как часы и запоминает последние значения... Спасибо ещё раз, а потом ещё раз уже с пивом:Dle12:
 
  • Like
Реакции: Archie's
@Archie's, ты не представляешь какой это удобный скрипт получился! Просто куча ненужных действий исчезло.
В большом, по времени, проекте ускорился на порядок!!! Чик чик и я на нужном месте. Почти не глядя... Я не знаю, но мне кажется ты сам не недооцениваешь что ты сделал. Респект тебе и уважение. :Dle12: Спасибо ещё раз. Закончу проектик - пришлю ответ...

п. с. Посадил его на Ctrl+0 ins и как в кнопочном телефоне бум бум, не глядя... И всё.:Dle37:
Это не замороченный скрипт, который нужен кому то одному, для одной операции только ему (и забудет его, до следующей одноразовой операции), а скрипт абсолютно рабочий и повседневный. На каждый день.:Dle90:
 
@Archie's, Привет! Нужен простой вроде скрипт, но мы так и не нашли решение. Добавить плагин, который в экшн листе (ну через шоткат который назначен) в Input FX и лучше в первый слот, миди плагины типа note repeater и arpeggiator чтобы добавлять быстро.
Возможно такое? Ну по id как у тебя в меню например. Или при помощи fx chain. Любые варианты подходят. Я сделал кастом, но он только на пустом треке работает. Если плагины в обычном инсерте есть - сумбур происходит.
 
@Archie's, а можно такой же - Script: Archie_FX; Open all VSTi in Selected tracks.lua, но - Script: Archie_FX; Toggle all VSTi in Selected tracks.lua?
Чтобы переключать, - показать окно - закрыть окно VSTi.
 
@YuriOl, Archie_FX; Toggle Open Close all VSTi in Selected tracks.lua

@AlexLazer,
PHP:
   local NameFX = 'NameFX';
    
    
    
    
    ----------------------------------------------
    
    --NameFX = NameFX:gsub('^Insert FX:%s','');
    --NameFX = NameFX:gsub('VST:%s','');
    
    NameFX = NameFX:gsub('^.-:',''):gsub('^.-:',''):gsub('^%s*','');
    
    local CountSelTrack2 = reaper.CountSelectedTracks2(0,true);
    if CountSelTrack2 > 0 then;
        
        reaper.PreventUIRefresh(1);
        reaper.Undo_BeginBlock();
        
        for i = 1,CountSelTrack2 do;
            local SelTrack = reaper.GetSelectedTrack2(0,i-1,true);
            ------
            local IDX = reaper.TrackFX_AddByName(SelTrack,NameFX,true,-1);
            if IDX >= 0 then;
                reaper.TrackFX_CopyToTrack(SelTrack,0x1000000+IDX,SelTrack,0x1000000,true);
            end;
            ------
        end;
        
        reaper.PreventUIRefresh(-1);
        reaper.Undo_EndBlock("Add Input FX Selected treck",-1);
    end;



123.gif
 
  • Like
Реакции: YuriOl
Что-то с JS не работает.
Как не работает? Может имя не верно вводишь?
123.gif
И можно менять чтобы окно плагина не открывалось?
PHP:
     local NameFX = 'NameFX';
     
     
     local CloseFx = true -- true / false
    
    ----------------------------------------------
    
    --NameFX = NameFX:gsub('^Insert FX:%s','');
    --NameFX = NameFX:gsub('VST:%s','');
    
    NameFX = NameFX:gsub('^.-:',''):gsub('^.-:',''):gsub('^%s*','');
    
    
    
    local CountSelTrack2 = reaper.CountSelectedTracks2(0,true);
    if CountSelTrack2 > 0 then;
        
        reaper.PreventUIRefresh(1);
        reaper.Undo_BeginBlock();
        
        for i = 1,CountSelTrack2 do;
            local SelTrack = reaper.GetSelectedTrack2(0,i-1,true);
            ------
            local IDX = reaper.TrackFX_AddByName(SelTrack,NameFX,true,-1);
            if IDX >= 0 then;
                reaper.TrackFX_CopyToTrack(SelTrack,0x1000000+IDX,SelTrack,0x1000000,true);
                
                if CloseFx then;
                    reaper.TrackFX_SetOpen(SelTrack,0x1000000,false);
                end;
            
            end;
            ------
        end;
        
        reaper.PreventUIRefresh(-1);
        reaper.Undo_EndBlock("Add Input FX Selected track",-1);
    end;
 
  • Like
Реакции: Maestro Sound
@Archie's, Toggle Open Close all VSTi in Selected tracks

Попробовал. Как по мне более удобней чтоб скрипт закрывал сначала сфокусированный Vsti и розфокусировался на аранжировочную область? а если нету сфокусированных Vsti то закрывал остальные на выделенных треках.
 
  • Like
Реакции: YuriOl
@AlexLazer, Странно, не понимаю почему у тебя не работает. У меня работает.
Попробуй вот так, закомментировать строку и с имени убрать префиксы.

123.gif
 
@AlexLazer, Это походу что то с js-кой не так. Я у себя проверил на этой же js-ке ('Channel Time Delayer'), и она не добавляется, а все остальные добавляются, не понимаю почему. Попробуй другие js-ки добавляются?
 
@AlexLazer, Что то АПИ втыкает не по децки. Завтра посмотрю, может получится сделать через fx чейн.
 
  • Like
Реакции: AlexLazer

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