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

@Supa75, Стоп.... Так ты второй раз запускаешь не мой скрипт, а Script: spk77_Set volume for selected tracks.lua)))!

111.png



222.png
 
Последнее редактирование:
  • Haha
  • Like
Реакции: AlexLazer, smrz1 и AbramoV
я кажется понял. Твой скрипт почему то после работы сбрасывает активность midi-editor. Я когда я повторно нажимаю хоткей - рипер думает, что он уже НЕ в миди-эдитиоре и вызывает экшн, который на хоткее в Main
 
@Supa75, Естественно, после запуска скрипта открывается 'новое' окно ввода и фокус падает на него и соответственно м.е. уже не имеет фокуса, ну а после нажатия на ок рипер уже сам решает на какое окно отправить фокус и скрипт тут уже непричем.
Обновил скрипт, что бы фокусировать м.е..
 
  • Like
Реакции: Supa75
вот заметил еще что. Если я вызвал экшн и передумал менять велосити (нажал ESC или CANCEL), то опять фокус теряется с МЭ
 
@Archie's, Доброго времени суток!
Вопрос по фэйдам/кроссфэйдам. Есть в Options команды Auto-crossfade media items... и Trim content behind...
Как выяснилось (для меня), очень крутую штуку Auto-crossfade я практически не использую при монтаже!!!
Я поражён. Как так?
А без неё монтаж ещё глупее - зачем мне накладывать два айтема друг на друга и что бы оба были слышны?:Dle54::Dle53:

Всё это было актуально лет 20 - 10 тому назад. Мощности были не те, экономия ресурсов и т. п.
Теперь при аранжировке, сведении и монтаже - это архаизм. Достаточно просто фэйдов от щелчков...

Но вот Trim content behind... при монтаже - штука полезная. Пример - я монтирую одну гитару или голос из разных вариантов/дублей:
Запись_2020_09_22_02_53_34_287.gif


Но тут неудобство: если я не точно поставил, или при прослушивание решил чуть сдвинуть назад - не выделенный айтем обрезан и надо его возвращать. А тут и так микроны ловишь и нюансы слушаешь - короче, мартышкин труд.:Dle80:

Можно сделать что бы левый (не выделенный) айтем не обрезался, а был просто как бы замьютирован под правым? А обрезался он только тогда, когда я его выделю? Ну и он уже как "Мастер" становиться, а правый/не выделенный теперь тоже не должен обрезаться под левым?

Запись_2020_09_22_03_10_25_920.gif


Это было бы супер удобно и круто в монтаже любого вида!:Dle23::Dle12:

п. с. Причём в теперешнем состоянии это частично возможно (при Trim behind), но только если ЛКМ держать зажатой. Плей включаешь - всё как надо: не выделенный айтем не играет под выделенным и не обрезается. Но так не возможно работать, всё время держа зажатой ЛКМ...:Dle74::Dle71:
 
Последнее редактирование:
Можно сделать что бы левый (не выделенный) айтем не обрезался, а был просто как бы замьютирован под правым? А обрезался он только тогда, когда я его выделю? Ну и он уже как "Мастер" становиться, а правый/не выделенный теперь тоже не должен обрезаться под левым?
Нет, трим все равно не даст при перемещении не резать, только если отключать трим.
Если только так решить:
1. Назначить трим на какую то клавишу и перед тем как двигать айтем и если не нужна обрезка, то клацать на нее и отключать трим.
или
2 вариант
вот скрипт, он когда включен, то при нажатии на shift трим отключается, а при отжатии обратно включается, если был включен до этого. Т.е. двигаешь айтем с зажатым шифтом и обрезка работать не будет, что бы работала привязка к сетке, то двигаешь айтем без шифта, а когда отпускаешь лкм, зажимаешь шифт, т.е. лкм отпускаешь с зажатым шифтом.
PHP:
    local function SetToggleButtonOnOff(numb);
        local _,_,sec,cmd,_,_,_ = reaper.get_action_context();
        reaper.SetToggleCommandState(sec,cmd,numb or 0);
        reaper.RefreshToolbar2(sec,cmd);
    end;
   
    local Tog,bla,bla2;
    local function loop();
   
        local GetState = reaper.JS_Mouse_GetState(127);
        if GetState&8 == 8 then;
            bla2 = nil;
            if not bla then;
                bla = true;
                Tog = reaper.GetToggleCommandStateEx(0,41117);
                if Tog > 0 then
                    reaper.Main_OnCommand(41117,0);
                end;
            end;
        else;
            bla = nil;
            if not bla2 then;
                bla2 = true;
                if Tog and Tog > 0 then;
                    Tog = reaper.GetToggleCommandStateEx(0,41117);
                    if Tog >= 0 then;
                        reaper.Main_OnCommand(41117,0);
                    end;
                end;
            end;
        end;
        reaper.defer(loop);
    end;
   
    loop();
    SetToggleButtonOnOff(1);
    reaper.atexit(function()SetToggleButtonOnOff(0)end);
 
@smrz1, Исправил небольшую ошибку.
PHP:
    local function SetToggleButtonOnOff(numb);
        local _,_,sec,cmd,_,_,_ = reaper.get_action_context();
        reaper.SetToggleCommandState(sec,cmd,numb or 0);
        reaper.RefreshToolbar2(sec,cmd);
    end;
   
    local Tog,bla,bla2;
    local function loop();
   
        local GetState = reaper.JS_Mouse_GetState(127);
        if GetState&8 == 8 then;
            bla2 = nil;
            if not bla then;
                bla = true;
                Tog = reaper.GetToggleCommandStateEx(0,41117);
                if Tog > 0 then
                    reaper.Main_OnCommand(41117,0);
                end;
            end;
        else;
            bla = nil;
            if not bla2 then;
                bla2 = true;
                if Tog and Tog > 0 then;
                    Tog = reaper.GetToggleCommandStateEx(0,41117);
                    if Tog == 0 then;
                        reaper.Main_OnCommand(41117,0);
                    end;
                end;
            end;
        end;
        reaper.defer(loop);
    end;
   
    loop();
    SetToggleButtonOnOff(1);
    reaper.atexit(function()SetToggleButtonOnOff(0)end);
 
@Archie's, тут главное - прослушивание моих движений. (Привязка к сетке меня вообще не интересует). Трим с шифтом да, отключается и не режет, но звучат оба айтема и я ничего путного не слышу, а только два одновременно звучащих айтема...
А можно сделать так: я с тримом двигаю правый айтем (в лево), слушаю, но когда хочу его двигать назад (в право), то левый айтем (обрезанный), как бы привязывается к правому, и раздвигается вслед за ним? То есть пустоты не будет...
 
но звучат оба айтема и я ничего путного не слышу, а только два одновременно звучащих айтема...
А если в настройках проекта установить это ?

188311


А можно сделать так: я с тримом двигаю правый айтем (в лево), слушаю, но когда хочу его двигать назад (в право), то левый айтем (обрезанный), как бы привязывается к правому, и раздвигается вслед за ним? То есть пустоты не будет...
Можно - но немного костыльно это мне кажется будет работать.
Когда двигаешь айтем, мышь должна находится четка над айтемом.
1113.gif


PHP:
    local function SetToggleButtonOnOff(numb);
        local _,_,sec,cmd,_,_,_ = reaper.get_action_context();
        reaper.SetToggleCommandState(sec,cmd,numb or 0);
        reaper.RefreshToolbar2(sec,cmd);
    end;
    
    local function loop();
        
        
        x,y = reaper.GetMousePosition();
        item,take = reaper.GetItemFromPoint(x,y,true);
        if item then
            GetState = reaper.JS_Mouse_GetState(1)&1;
            if GetState == 0 then;
                t={}
                pos = reaper.GetMediaItemInfo_Value(item,'D_POSITION');
                tr = reaper.GetMediaItemInfo_Value(item,'P_TRACK');
                CountTrItem = reaper.CountTrackMediaItems(tr);
                for i = 1,CountTrItem do
                    it2 = reaper.GetTrackMediaItem(tr,i-1)
                    pos2 = reaper.GetMediaItemInfo_Value(it2,'D_POSITION');
                    len2 = reaper.GetMediaItemInfo_Value(it2,'D_LENGTH');
                    if pos2+len2 == pos then
                        t[#t+1]= it2
                    end
                end
            else
                if #t > 0 then;
                    pos = reaper.GetMediaItemInfo_Value(item,'D_POSITION');
                    for i = 1,#t do
                        pos3 = reaper.GetMediaItemInfo_Value(t[i],'D_POSITION');
                        len3 = reaper.GetMediaItemInfo_Value(t[i],'D_LENGTH');
                        newLen = pos-pos3
                        reaper.SetMediaItemInfo_Value(t[i],'D_LENGTH',newLen);
                    end
                end
            end;
        end;
        reaper.defer(loop);
    end;
    
    
    loop();
    SetToggleButtonOnOff(1);
    reaper.atexit(function()SetToggleButtonOnOff(0)end);
 
@Archie's, уже можно нормально работать и с изменением в настройках проекта (с выключенным стримом) . И нормально с новым скриптом - у меня в мод. мыши так настроено что мне не надо куда то чётко её ставить.

Ну первый вариант (с изменением в настройках проекта) - рабочий как есть. Можно спокойно работать.

А вот по скрипту: Когда правый айтем тянешь назад, то он левый айтем будет тянуть за собой до бесконечности, а не до его прежних границ (в первом варианте с этим всё правильно)
А когда двигаешь левый айтем, то он работает как обычный стрим - обрезает.
Если сделать что бы пр. айтем не тянул за собой л. айтем до бесконечности, а активный левый работал с функцией правого - было бы супер!!!
 
Последнее редактирование:
Привет! Регион менеджер хочу))). Обратился я когда то к Михаилу Пилявскому. В итоге мы все равно с несколькими косяками собрали. Я щас работаю на нем, но иногда очень тяжко..
Может ты сможешь помочь? По сути мне нужен в точности такой же как SWS Marker List.
Только вот вместо двойного клика нужно визуальное подтверждение выбора (галочка).
Я до сих пор не могу из-за этого слезть с самплитюда. Там это реализовано в виде галки.
MPL сделал мне такой. Вместо галки квадратик, мне все нравится. Местами даже плюшки появились. Скрипт называется RegionManager.
Он нарисовал свою полосатую оболочку, хотя мне это не по душе. Но зато цвета регионов и маркеров отображаются в самом регион менеджере. Да еще и строка состояния отображается, вот это прям пушка! Но из-за этой же оболочки появились проблемки:
1.Корявая работа на 4К
2. Невозможность использовать гор. клавиши рипера пока находишья в фокусе менеджера
3. При переименовании окошко подтверждения вылезает дважды
4. При поиске (с фильтрацией) прокручивает вниз, из-за чего порой кажется, что ничего не нашел, а нужно было покрутить мышку.
Мне очень нравится сделанный скрипт, но меня напрягают все перечисленные штуки. Ну и вдобавок он отлично втирается в шестую тему рипера, но при смене сбивает с работы.
На всякий случай объясню. Понимаю, что не всякому рядовому это нужно. Мне для концертных плейбеков, песни переключать.
 
@Hobot, На данный скрипт потребуется очень много времени и сил, (потому что у меня нет ни каких заготовок GUI), к сожалению у меня в данный момент нету столько времени.
Да и к тому же для чего делать то что уже есть ?
Так вы обратитесь к Михаилу на прямую, что бы он исправил это, что то может и исправит. Или посмотрите на скрипт @Aleksandr Oleynik.

Да и вообще что касается GUI в рипере, то я за эти скрипты не берусь, потому что писать всё гуи с нуля, как по мне, то это мартышкин труд, который не грамма на ценится. Ну а писать свою библиотеку - это очень сложно и долго (для меня по крайней мере) и в итоге как говорится никому не нужно.
 
@Hobot, На данный скрипт потребуется очень много времени и сил, (потому что у меня нет ни каких заготовок GUI), к сожалению у меня в данный момент нету столько времени.
Да и к тому же для чего делать то что уже есть ?
Так вы обратитесь к Михаилу на прямую, что бы он исправил это, что то может и исправит. Или посмотрите на скрипт @Aleksandr Oleynik.

Да и вообще что касается GUI в рипере, то я за эти скрипты не берусь, потому что писать всё гуи с нуля, как по мне, то это мартышкин труд, который не грамма на ценится. Ну а писать свою библиотеку - это очень сложно и долго (для меня по крайней мере) и в итоге как говорится никому не нужно.
Да, я написал ему. Он просто щас очень занят и как бы проблемы эти решаться по ходу не скоро... А работать то с комфортом хочется уже вчера) А существующий mpl RegionManager поправить нельзя? Типа без доступа к его библиотекам никак?
 
@Archie's, доброго времени!
Такой вот вопрос: существует ли такой скрипт или экшен, в который я могу забить время (минуты/секунды), шлёп - и курсор оказывается в этом месте?
 
Да нет. Это не то... Точнее то, но там очень "странно" надо время вводить. Почему то задом наперёд:Dle14: Сначала секунды, потом минуты - короче меня это не ускорило, а затормозило... Короче: баня, а через дорогу - раздевалка:Dle39:
 
Да нет. Это не то... Точнее то, но там очень "странно" надо время вводить. Почему то задом наперёд:Dle14: Сначала секунды, потом минуты - короче меня это не ускорило, а затормозило... Короче: баня, а через дорогу - раздевалка:Dle39:
Нормально там всё вводится. В значениях, которые на тайм лайне в данный момент. Вводится всё обычно, цифры просто по мере ввода сдвигаются влево.
 
@smrz1,
Archie_Edit cursor; Go To Time(time).lua
Archie_Edit cursor; Go To Time(beats).lua
Вот то что надо!
Только есть нюанс. Оказаться курсору в нужном месте и времени надо быстро, а это действие замедляет сам набор цифр.
Идеальный вариант: (к примеру) шлёпаю по клавишам 2233. Enter, курсор на 22 минуте 33 секунде. Набрал больше - 2233223 - Enter, курсор на 22:33.223. Очень быстро, а самое главное - набираешь не глядя на монитор, вообще на это не отвлекаешься!

Часы твои у меня перед глазами - всё ясно и понятно кто ускоряет время...:Dle58:

п. с. Должны скоро пиво завести, попъём? :Dle8:
 
@Archie's, а самое крутое было бы если последний набор сохранялся. Переместил, после набора, курсор в другое место, вызвал скрипт, и уже без набора жмёшь Enter и он на прежнем месте...
 
@smrz1, Не совсем понял, оно так и есть вроде как. Только ты еще упустил, что во времени есть еще и часы, а не только минуты секунды.
Может ты не до конца понял как ввод работает?
В общем так:
если ты введешь одно число, то курсор прыгнет на миллисекунды. Например введешь 468 - курсор прыгнет 0:00.468
если ты введешь два числа (разделителем между числами может быть любой символ, кроме цифры, хоть пробел), Например введешь 2 0 - курсор прыгнет 0:02.00, введешь 25 350 - курсор прыгнет 0:25.350 и т.д..
если введешь три числа, то это будет мин:сек.мсек
ну и 4 числа - это .ч.м.с.мс..
@Archie's, а самое крутое было бы если последний набор сохранялся. Переместил, после набора, курсор в другое место, вызвал скрипт, и уже без набора жмёшь Enter и он на прежнем месте...
Добавил - параметр "Previous_input", по умолчанию отключен в скрипте.
 
@Archie's, в том то и дело, что такой вид набора, на практике, практически не применим (в любом случае - это ничего не ускоряет). Всё что в поле оранжа, я и просто мышкой курсор поставлю на нужное место. Зачем мне кн. набор если я вижу место?
В пятиминутном проекте такой набор нужен, в основном, если требуется сохранять широкий горизонтальный зум... Ну для сравнения отдельных файлов, сохраняя в памяти их визуальную картинку. При изменении зума, само собой - ничего не сравнишь ( Постоянный зум у меня почти постоянно:Dle46:).
Если постоянный зум не нужен, то и цифровой набор тоже практически не нужен, ну или он скорее замедлит, чем ускорит работу... ИМХО

Я о другом!
Пример: У меня трек на полтора часа. Есть текст с контрольными точками и с указанным для них временем. Зуммировать по горизонтали - не вариант (скажем так - определённое расширение позволяет визуально понимать сетку, а не смотреть на цифры).

На точке указано время 39:20:107. Как хотелось бы набрать: 03920 (первй 0 - это часы пропускаем), и Enter. Получается, набрав 03920, получаем 39:20 - минуты, секунды. Набрав 13920, получаем 1:39:20 - часы, минуты, секунды... Те есть - не набирать все эти знаки (двоеточия и точки)
Миллисекунды не нужны совсем - это быстрый набор, а не точный. Точно я уже сам, по месту буду решать что и как...

п. с. Вот такой способ быстрого цифрового набора был бы идеален. (быстрого, а не точного!)
В любом случае существующий способ быстрого набора не удобен и редко применяется. Я не имею в виду только твой скрипт, так и у всех, и в других DAW тоже! Ну или я пока ещё не видел...:Dle32:
 
Последнее редактирование:
@smrz1, Смотри, ты хочешь избавится от разделителей чисел. Хорошо, а как скрипту понимать тогда, где какие числа? Допустим где минуты, где секунды, часы и т.д. ? Хорошо, можно ориентироваться так: Первая цифра - это часы, вторая, третья - это минуты,четвертая пятая - это секунды ,ну и остальные - это миллисекунды. А если нужно прыгнуть на десятый час, то как тут быть? Скрипт уже этого не поймет, и подумает что ты ввел 1 час, а не десять часов.
 
@smrz1, Смотри, ты хочешь избавится от разделителей чисел. Хорошо, а как скрипту понимать тогда, где какие числа? Допустим где минуты, где секунды, часы и т.д. ? Хорошо, можно ориентироваться так: Первая цифра - это часы, вторая, третья - это минуты,четвертая пятая - это секунды ,ну и остальные - это миллисекунды. А если нужно прыгнуть на десятый час, то как тут быть? Скрипт уже этого не поймет, и подумает что ты ввел 1 час, а не десять часов.
Будем считать что 10 часовой трек мы делать не будем, а разобьём его по 5 часов.:Dle37: При редактировании таких проектов (более 10 часов), я бы так и поступил. Такой проект очень медленно ворочается, да просто смысла нет в нём. Всегда потом можно соединить:Dle95:

п. с. "Первая цифра - это часы, вторая, третья - это минуты,четвертая пятая - это секунды ,ну и остальные - это миллисекунды." Именно так! В твоих часах у меня - 0:51.204 так сейчас курсор в проекте стоит - это 51 секунда и 204 миллисекунды.
 
Последнее редактирование:
@Archie's, я делал 12 часовой проект (и делаю иногда, когда другой работы нет). Был разбит на 12 частей, сделан по отдельности, а потом смонтирован в один.
Все так поступают кто с большими проектами работает. Всё гораздо шустрее пашет, безопаснее, и можно, в случае необходимости распределить работу по разным "монтажникам", если надо быстро сделать.
 

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