Так что вариант только с шифтом, но он не работает увы
Так что вариант только с шифтом, но он не работает увы
Не надо, я проверил в 2.10 тоже работает.sws 2,10. Бета версию побаиваюсь ставить
Неправильно я вопрос поставил и скрин неправильно сделал.Нет. Локинг только лево право верх низ юзаю.
local PixelsToCapture = 5 -- Пикселей скраю для захвата (5)
local offset = 2 -- pixel отступ (2)
local ScrollBar = 19 -- pixel Полоса прокрутки справа (19)
--======================================================================================
--////////////// SCRIPT \\\\\\\\\\\\\\ SCRIPT ////////////// SCRIPT \\\\\\\\\\\\\\\\
--======================================================================================
--==== FUNCTION MODULE FUNCTION ======================= FUNCTION MODULE FUNCTION ============== FUNCTION MODULE FUNCTION ==================
local P,F,L,A=reaper.GetResourcePath()..'/Scripts/Archie-ReaScripts/Functions','/Arc_Function_lua.lua';L,A=pcall(dofile,P..F);if not L then
reaper.RecursiveCreateDirectory(P,0);reaper.MB('Missing file / Отсутствует файл!\n\n'..P..F,"Error - "..debug.getinfo(1,'S').source:match--
('.*[/\\](.+)'),0);return;end; if not A.VersionArc_Function_lua("2.8.0",P,"")then A.no_undo() return end;local Arc=A;--====================
--==== FUNCTION MODULE FUNCTION =================================▲=▲=▲========================= FUNCTION MODULE FUNCTION ==================
Arc.HelpWindowWhenReRunning(1,'',false,'');
--- / Счетчик для пропуска / ---
local function Counter();
local t={};return function(x,b)b=b or 1 t[b]=(t[b]or 0)+1 if t[b]>(x or math.huge)then t[b]=0 end return t[b]end;
end;Counter = Counter(); -- Counter(x,buf); x=reset
local itemX,_;
local function loop();
if Counter(2,1) == 0 then;
------------------
local MouseState = reaper.JS_Mouse_GetState(127);
local ScrollBarL = ScrollBar/reaper.GetHZoomLevel();
local offsetL = offset/reaper.GetHZoomLevel();
local edge = PixelsToCapture/reaper.GetHZoomLevel();--Пиксели в секунды
local start_time,end_time = reaper.GetSet_ArrangeView2(0,0,0,0);
local PosMCur = reaper.BR_PositionAtMouseCursor(false);
local ms_x,ms_y = reaper.GetMousePosition();
----
if MouseState == 0 then;
itemX,_ = reaper.GetItemFromPoint(ms_x,ms_y,false);
if itemX then;
local pos = reaper.GetMediaItemInfo_Value(itemX,'D_POSITION');
local len = reaper.GetMediaItemInfo_Value(itemX,'D_LENGTH');
local endPos = pos+len;
----
if PosMCur <= start_time+edge and pos < start_time then;
reaper.JS_Mouse_SetCursor(reaper.JS_Mouse_LoadCursor(32649));
elseif PosMCur>=(end_time-ScrollBarL-edge)and endPos > end_time then;
reaper.JS_Mouse_SetCursor(reaper.JS_Mouse_LoadCursor(32649));
end;
end;
end;
----
if MouseState == 1 then;
local item,take = reaper.GetItemFromPoint(ms_x,ms_y,false);
if item and item == itemX then;
local pos = reaper.GetMediaItemInfo_Value(item,'D_POSITION');
local len = reaper.GetMediaItemInfo_Value(item,'D_LENGTH');
local endPos = pos+len;
----
if PosMCur <= start_time+edge then;
----
if (pos < start_time) and (endPos > (start_time+edge)) then;
reaper.Undo_BeginBlock();
local posNew = start_time + offsetL;
Arc.SetMediaItemLeftTrim2(posNew,item);
reaper.Undo_EndBlock('Trim Left',-1);
itemX = nil;
end;
----
elseif PosMCur>=(end_time-ScrollBarL-edge)then;
----
reaper.Undo_BeginBlock();
local lenNew = (end_time - pos)-ScrollBarL-offsetL;
reaper.SetMediaItemLength(item,lenNew,true);
reaper.Undo_EndBlock('Trim Right',-1);
itemX = nil;
----
end;
itemX = nil;
end;
end;
end;
------------------
reaper.defer(loop);
end;
reaper.defer(loop);
Arc.GetSetToggleButtonOnOff(1,1);
reaper.atexit(Arc.GetSetToggleButtonOnOff);
local PixelsToCapture = 5 -- Пикселей скраю для захвата (5)
local offset = 2 -- pixel отступ (2)
local ScrollBar = 19 -- pixel Полоса прокрутки справа (19)
--======================================================================================
--////////////// SCRIPT \\\\\\\\\\\\\\ SCRIPT ////////////// SCRIPT \\\\\\\\\\\\\\\\
--======================================================================================
--==== FUNCTION MODULE FUNCTION ======================= FUNCTION MODULE FUNCTION ============== FUNCTION MODULE FUNCTION ==================
local P,F,L,A=reaper.GetResourcePath()..'/Scripts/Archie-ReaScripts/Functions','/Arc_Function_lua.lua';L,A=pcall(dofile,P..F);if not L then
reaper.RecursiveCreateDirectory(P,0);reaper.MB('Missing file / Отсутствует файл!\n\n'..P..F,"Error - "..debug.getinfo(1,'S').source:match--
('.*[/\\](.+)'),0);return;end; if not A.VersionArc_Function_lua("2.8.0",P,"")then A.no_undo() return end;local Arc=A;--====================
--==== FUNCTION MODULE FUNCTION =================================▲=▲=▲========================= FUNCTION MODULE FUNCTION ==================
Arc.HelpWindowWhenReRunning(1,'',false,'');
--- / Счетчик для пропуска / ---
local function Counter();
local t={};return function(x,b)b=b or 1 t[b]=(t[b]or 0)+1 if t[b]>(x or math.huge)then t[b]=0 end return t[b]end;
end;Counter = Counter(); -- Counter(x,buf); x=reset
local itemX,_;
local function loop();
if Counter(2,1) == 0 then;
------------------
local MouseState = reaper.JS_Mouse_GetState(127);
local ScrollBarL = ScrollBar/reaper.GetHZoomLevel();
local offsetL = offset/reaper.GetHZoomLevel();
local edge = PixelsToCapture/reaper.GetHZoomLevel();--Пиксели в секунды
local start_time,end_time = reaper.GetSet_ArrangeView2(0,0,0,0);
local PosMCur = reaper.BR_PositionAtMouseCursor(false);
-----
local ms_x,ms_y = reaper.GetMousePosition();
if MouseState == 0 then;
itemX,_ = reaper.GetItemFromPoint(ms_x,ms_y,false);
if itemX then;
local pos = reaper.GetMediaItemInfo_Value(itemX,'D_POSITION');
local len = reaper.GetMediaItemInfo_Value(itemX,'D_LENGTH');
local endPos = pos+len;
----
if PosMCur <= start_time+edge and pos < start_time then;
reaper.JS_Mouse_SetCursor(reaper.JS_Mouse_LoadCursor(32649));
elseif PosMCur>=(end_time-ScrollBarL-edge)and endPos > end_time then;
reaper.JS_Mouse_SetCursor(reaper.JS_Mouse_LoadCursor(32649));
end;
end;
end;
-----
if MouseState == 1 then;
local item,take = reaper.GetItemFromPoint(ms_x,ms_y,false);
if item and item == itemX then;
local pos = reaper.GetMediaItemInfo_Value(item,'D_POSITION')
local len = reaper.GetMediaItemInfo_Value(item,'D_LENGTH')
local endPos = pos+len;
----
if PosMCur <= start_time+edge then;
----
if (pos < start_time) and (endPos > (start_time+edge)) then;
reaper.Undo_BeginBlock();
shift = (start_time-pos)+offsetL;
reaper.GetSet_ArrangeView2(0,1,0,0,start_time-shift,end_time-shift);
reaper.Undo_EndBlock('Scroll Left',-1);
itemX = nil;
end;
----
elseif PosMCur>=(end_time-ScrollBarL-edge)then;
----
if endPos > (end_time-ScrollBarL) and pos < (end_time-ScrollBarL-edge)then;
reaper.Undo_BeginBlock();
shift = (endPos-end_time)+ScrollBarL+offsetL;
reaper.GetSet_ArrangeView2(0,1,0,0,start_time+shift,end_time+shift);
reaper.Undo_EndBlock('Scroll Right',-1);
itemX = nil;
end;
----
end;
itemX = nil;
end;
end;
end;
------------------
reaper.defer(loop);
end;
reaper.defer(loop);
Arc.GetSetToggleButtonOnOff(1,1);
reaper.atexit(Arc.GetSetToggleButtonOnOff);
@Archchie, Спасибо! Обзови на своё усмотрение, у тебя все равно логичнее будет, так как я с ангильским не очень!Если я правильно понимаю, то Версия которая подрезает, отличается от кубовской только тем, что в кубе нужно сделать один клик, а здесь два.
Вот и как их обозвать ?))
Если не надо, то как говорится и не заморачивайся!Что я не догоняю? В какой ситуации его\их удобно использовать?. Поясните, неразумному???
Тут смысл не в Trim, а в том, что бы при большом зуме захватить айтем за край и начать тянуть его.Срипт Trim резать по краю (зачем именно по краю?), в Cubase я это не использовал... Видимо и там "не проникся"
Скрипту по барабану где курсор, скролл всегда прокрутит к началу или концу айтема.Срипт Scroll показался интересным, но так как там курсор ставится в начале айтема, а потом уводится влево из зоны видимости - и без скрипта можно просто старт/стоп нажать.
Даже примерно не знаю как((Обзови на своё усмотрение, у тебя все равно логичнее будет, так как я с ангильским не очень!
Типа Capture the Edge of an Item from outside the arrangement windowТут смысл не в Trim, а в том, что бы при большом зуме захватить айтем за край и начать тянуть его.
Посмотреть вложение 181590
Посмотреть вложение 181588
Скрипту по барабану где курсор, скролл всегда прокрутит к началу или концу айтема.
Посмотреть вложение 181589
[automerge]1590155665[/automerge]
Даже примерно не знаю как((
Там два скрипта! ты видел? Я же даже гифки сделал.а тут получается вообще улетает в сторону
Я с Nuendo 2 начинал работать. До сих пор стоит Nuendo 3 (есть заказ на реанимацию старых проектов). Не знаю в какие годы у тебя были "при монтаже и озвучке видео в Nuendo", но более менее доступные версии, в моём понимании, вообще не годятся. Если, конечно, у тебя стоит Nuendo 6 и далее - то ты видимо богач!!! (цену загнули слишком на Nuendo 6 и далее).@Archchie, Если не надо, то как говорится и не заморачивайся!
Это годами набитая привычка при монтаже и озвучке видео в Nuendo.
Работал над док фильмами и даже худ. сериалами дубляж делал. Богач не богач, эта работа была государственная.Не знаю в какие годы у тебя были "при монтаже и озвучке видео в Nuendo",
Вот и я так же сделал бы с сриптом Scroll (Поставлю скрипт в свой список автозагрузок ) . А его как назовёте? Качну, когда @Archchie, его в свой репозиторий поставит.Работал над док фильмами и даже худ. сериалами дубляж делал. Богач не богач, эта работа была государственная.
@Archchie, ещё раз благодарю! Поставил скрипт в свой список автозагрузок и теперь как будто там и было!
Скрипт обозвал примерно Capture and TRIM the edges Item on the edges of the Arrange window )
Я думаю ему место быть в твоём репаке!)
Я думаю ему место быть в твоём репаке!)
Будет - И в реапаке и как постоянная функция, но чуть позже.) Просто скрипт еще не готов, это я для теста выложил.) Там все не так просто, как кажется.Ну что бы как постоянная функция была, а не нажимать кнопку - будет он так работать?
Скрипт в автозагрузку ставить НЕ нужно!!! Он при запуске рипера будет включен, если был включен при закрытии рипера.Поставил скрипт в свой список автозагрузок и теперь как будто там и было!
Вот и я так же сделал бы с сриптом Scroll (Поставлю скрипт в свой список автозагрузок )
Для захвата выделено пять пикселей (скрин 1), это значение можно увеличить в скрипте (скрин 2)Правда сложно иногда ухватиться,
Спасибо!@Archchie, Супер!!! Чуть задонатил
А можно сделать так что бы когда появляется рука, и я "кликаю" ей, айтем не выделялся? Было бы супер!@AlexLazer, Еще мышь может колбасить, когда ее ведешь. Обрати внимания на гиф, когда я вожу мышь вверх - вниз, то ее колбасит, а когда останавливаю, то появляется рука. Это из за того, что когда ведешь мышь скрипт пытается установить свой курсор, а рипер свой.
Посмотреть вложение 181649
Да - сложно это было придумать. Но что то получилось.))А можно сделать так что бы когда появляется рука, и я "кликаю" ей, айтем не выделялся? Было бы супер!
У меня, после обновления скрипта, происходит какая то странная штука: айтем всё равно выделяется и появляется табличка: ...tem on edge arrange and scroll to edge item(AutoRun).lua:132: attempt to index a nil value.Да - сложно это было придумать. Но что то получилось.))
Странно - у меня работает.У меня, после обновления скрипта, происходит какая то странная штука: айтем всё равно выделяется и появляется табличка: ...tem on edge arrange and scroll to edge item(AutoRun).lua:132: attempt to index a nil value.
local LastAction = (reaper.Undo_CanUndo2(0)or ''):upper();