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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Будем считать что 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();
 

smrz1

Banned
25 Янв 2010
1.484
349
83
@Archie's, идеально!!! Просто то что надо! Супер!:Dle12::Dle4::Dle23:

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

п. с. "больше 9, то произойдет абра-кадабра" - кажется понял. Если впечатать, с двоеточием, допустим 12:12:123 - то будет какой то крах?
 
Последнее редактирование:

smrz1

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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Если впечатать, с двоеточием, допустим 12:12:123 - то будет какой то крах?
Ну ты же сам захотел убрать разделители ))

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

smrz1

Banned
25 Янв 2010
1.484
349
83
Ну ты же сам захотел убрать разделители ))



Ой, не заметил. Два тире в начали строки убери вот здесь.
Посмотреть вложение 188557
Убрал эти два тире, но ничего не изменилось... Но ведь что то должно было измениться? Они же не просто так там стояли?
С другой стороны, последнее значение я и маркером могу отметить... Главное и основное он делает как надо!
 

Archie's

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

Mr_Tsonts

Well-Known Member
18 Апр 2019
1.656
1.341
113
56
Киев
Убрал эти два тире, но ничего не изменилось... Но ведь что то должно было измениться? Они же не просто так там стояли?
С другой стороны, последнее значение я и маркером могу отметить... Главное и основное он делает как надо!
Не пойму, что не получается с обычным, который Арчи уже закинул в реапак. Там не надо никаких двоеточий писать. Просто, если надо 5 минут, 10 сек, то любые нецифры работают как знаки препинания, можно просто 5n10u0, если 1 час 5 мин и 10 сек - 1k5k10k0 И там в начале скрипта как раз всё понятно с false и true.
 
Последнее редактирование:
  • Like
Реакции: Archie's

smrz1

Banned
25 Янв 2010
1.484
349
83
Не пойму, что не получается с обычным, который Арчи уже закинул в реапак. Там не надо никаких двоеточий писать. Просто, если надо 5 минут, 10 сек, то любые нецифры работают как знаки препинания, можно просто 5n10u0. И там в начале скрипта как раз всё понятно с false и true.
Вот этого мне как раз и не надо - это уже будет "не быстрый" набор. Что двоеточии, что буквы между цифрами - без разницы. Надо было (как и стало) что бы было быстро и всё.
 

smrz1

Banned
25 Янв 2010
1.484
349
83
@Archie's, всё! Теперь полый комплект. Все работает как часы и запоминает последние значения... Спасибо ещё раз, а потом ещё раз уже с пивом:Dle12:
 
  • Like
Реакции: Archie's

smrz1

Banned
25 Янв 2010
1.484
349
83
@Archie's, ты не представляешь какой это удобный скрипт получился! Просто куча ненужных действий исчезло.
В большом, по времени, проекте ускорился на порядок!!! Чик чик и я на нужном месте. Почти не глядя... Я не знаю, но мне кажется ты сам не недооцениваешь что ты сделал. Респект тебе и уважение. :Dle12: Спасибо ещё раз. Закончу проектик - пришлю ответ...

п. с. Посадил его на Ctrl+0 ins и как в кнопочном телефоне бум бум, не глядя... И всё.:Dle37:
Это не замороченный скрипт, который нужен кому то одному, для одной операции только ему (и забудет его, до следующей одноразовой операции), а скрипт абсолютно рабочий и повседневный. На каждый день.:Dle90:
 

AlexLazer

Well-Known Member
26 Янв 2009
2.660
1.394
113
40
Russia, Stavropol
soundprofi.ru
@Archie's, Привет! Нужен простой вроде скрипт, но мы так и не нашли решение. Добавить плагин, который в экшн листе (ну через шоткат который назначен) в Input FX и лучше в первый слот, миди плагины типа note repeater и arpeggiator чтобы добавлять быстро.
Возможно такое? Ну по id как у тебя в меню например. Или при помощи fx chain. Любые варианты подходят. Я сделал кастом, но он только на пустом треке работает. Если плагины в обычном инсерте есть - сумбур происходит.
 

YuriOl

Well-Known Member
6 Май 2005
1.060
590
113
55
Луганск
youtube.com
@Archie's, а можно такой же - Script: Archie_FX; Open all VSTi in Selected tracks.lua, но - Script: Archie_FX; Toggle all VSTi in Selected tracks.lua?
Чтобы переключать, - показать окно - закрыть окно VSTi.
 

Archie's

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

Archie's

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

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@Archie's, Toggle Open Close all VSTi in Selected tracks

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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@AlexLazer, Странно, не понимаю почему у тебя не работает. У меня работает.
Попробуй вот так, закомментировать строку и с имени убрать префиксы.

123.gif
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@AlexLazer, Это походу что то с js-кой не так. Я у себя проверил на этой же js-ке ('Channel Time Delayer'), и она не добавляется, а все остальные добавляются, не понимаю почему. Попробуй другие js-ки добавляются?
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@AlexLazer, Что то АПИ втыкает не по децки. Завтра посмотрю, может получится сделать через fx чейн.
 
  • Like
Реакции: AlexLazer

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