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

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
Вроде бы мелочь, но как-то стал обращать внимание на то, что новые плагины загружаются не по центру. Есть скрипт Script: mpl_Move focused Track FX to screen center.lua. Но он работает только после того, как откроешь эффект.
Возможно ли написать скрипт, который сделает float selected FX for selected tracks, но сразу в центре?
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
P.S. как вам моя идея про скрипт для редактирования значения точки автоматизации путём прокрутки колеса мышки?
нормальная идея, но нет времени даже в общих чертах глянуть что и как...
Из одной поездки - в другую, с собой только iPad.
 

Wefilev

Active Member
22 Мар 2015
198
26
28
Возможно ли написать скрипт, который сделает float selected FX for selected tracks, но сразу в центре?
Немного не корректно работает. В зависимости от размера плагина открывается по разному. Хотелось бы, по возможности, чтобы все плагины открывались левым верхним углом в одной, заданной точке.
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@Wefilev, не знаю, постоянно приходится двигать плагин к центру, чтобы он не закрывал боковой интерфейс.
Ну или даже, если не selected FX, то можно last FX. По сути это нужно после того, как загружаешь плагин кнопкой SWS, а он загружает плагин в конец цепочки эффектов
В идеале, создать еще условие, если хоть немного я сдвину координаты окна относительно центра, то открывать плагин не в центре а в соответствии с последними координатами.
Но это необязательно, можно только для единичного открытия использовать
 
Последнее редактирование:
  • Like
Реакции: fractala

HDVulcan

Active Member
23 Окт 2016
176
37
28
Кто-нибудь может помочь и создать отдельный скрипт копирующий по функционалу экшен "Spectrogram: Add spectral edit to item".
Этот экшен всегда запускается с нулевыми значениями по умолчанию. И приходится все время тратить время на настройку определенных шаблонов.
"Spectral edit to item preset".Смысл скрипта в том чтобы можно было задавать вручную и сохранить свои готовые параметры: Spectral region gane", все параметры fade in и fade out и т.д.,
т.е. задавать любые значения на все ползунки и вызывать скрипт по горячей клавише.
 
Последнее редактирование:

Rsay

New Member
27 Окт 2017
26
3
3
33
Ребята, можно как-то сделать, что бы при вводе значений Рипер так же реагировал как и эта программа?
Выделяю пару точек, ввожу значение для самой нижней и они пропорционально поднимаются... если точка достигает пика. то она там и остается
(на данный момент при выделении множества точек я могу ввести значение только для одной,
или есть скрипт, которым можно вводить для многих, но только одно значение для всех)

 
Последнее редактирование:

muzicgrand

Well-Known Member
26 Ноя 2009
461
771
93
44
СССР
Пацаны,подскажите скрипт чтобы в открытом миди редакторе выделился трек открытого итема.
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
Ребята, можно как-то сделать, что бы при вводе значений Рипер так же реагировал как и эта программа?
Выделяю пару точек, ввожу значение для самой нижней и они пропорционально поднимаются... если точка достигает пика. то она там и остается
(на данный момент при выделении множества точек я могу ввести значение только для одной,
или есть скрипт, которым можно вводить для многих, но только одно значение для всех)
+ 1 к скрипту для точек.
 
Последнее редактирование:

muzicgrand

Well-Known Member
26 Ноя 2009
461
771
93
44
СССР
borisuperful Я выделяю айтем правой кнопкой,и открываю горячей клавишей чтобы не сбиться с такта,мне так легче проверять миди дорожки на наличие ошибок.
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@muzicgrand, если открываешь горячей клавишей, сделай кастом, первым пунктом добавь скрипт Script: X-Raym_Select only tracks of selected items.lua
 
  • Like
Реакции: muzicgrand

CerberPic

Member
17 Фев 2017
70
22
8
35
Подскажите пожалуйста.
Преамбула. Я в своих проектах использую пустые миди-айтемы на треках-папках, по длине равные содержимому этих самых папок. Создаются они автоматически при создании папок специально написанным для этого скриптом.
Суть вопроса. Сегодня я написал скрипт для назначения его на Media item left click. Скрипт проверяет, является ли трек с выделенным айтемом папкой, и если является, то выделяет вместе с ним и все дочерние айтемы. Весьма удобно для перемещения содержимого папок без надобности их раскрывать и выделять айтемы вручную.
PHP:
reaper.Undo_BeginBlock()
reaper.PreventUIRefresh(-1)
for i = 0, reaper.CountMediaItems(0) - 1 do
    reaper.SetMediaItemSelected(reaper.GetMediaItem(0, i), false)
end
reaper.BR_GetMouseCursorContext()
local item = reaper.BR_GetMouseCursorContext_Item()
reaper.SetMediaItemSelected(item, true)
local tr = reaper.GetMediaItemTrack(item)
if reaper.GetMediaTrackInfo_Value(tr, 'I_FOLDERDEPTH') ~= 1 then return end
reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_SAVESEL',0) -- SWS: Save current track selection

local t_pos, t_end = {}, {}
reaper.SetOnlyTrackSelected(tr)
reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_SELCHILDREN',0) -- Select only children of selected folders
reaper.DeleteTrackMediaItem(tr, reaper.GetTrackMediaItem (tr, 0))
for s = 0, reaper.CountSelectedTracks(0) - 1 do
    local child = reaper.GetSelectedTrack(0, s)
    for i = 0, reaper.CountTrackMediaItems(child) - 1 do
        local ch_item = reaper.GetTrackMediaItem(child, i)
        reaper.SetMediaItemSelected(ch_item, true)
        if ch_item then
            local pos = reaper.GetMediaItemInfo_Value(ch_item, 'D_POSITION')
            table.insert(t_pos, pos)
            local lng = reaper.GetMediaItemInfo_Value(ch_item, 'D_LENGTH')
            local fin = pos + lng
            table.insert(t_end, fin)
        end
    end
end
table.sort(t_pos)
table.sort(t_end)
local starttime = t_pos[1]
local endtime = t_end[#t_end]
if starttime and endtime then
    reaper.CreateNewMIDIItemInProj(tr, starttime, endtime, 0)
    local item = reaper.GetTrackMediaItem(tr, 0)
    local retval, tr_name = reaper.GetTrackName(tr, '')
    local take = reaper.GetMediaItemTake(item, 0)
    reaper.GetSetMediaItemTakeInfo_String(take, 'P_NAME', tr_name, 1)
    reaper.SetMediaItemInfo_Value(item, 'I_CUSTOMCOLOR', 20788777.0)
    reaper.SetMediaItemSelected(item, true)
end

reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_RESTORESEL',0) -- SWS: Restore saved track selection
reaper.PreventUIRefresh(1)
reaper.Undo_EndBlock("Change media item selection", -1)
И всё бы хорошо, но раздражает перемещаемый эдит курсор при кликах на айтемах. Пробовал сохранять и восстанавливать позицию курсора, но в итоге пришёл к выводу, что курсор перемещается до запуска скрипта.
Вопрос. Как запретить перемещение курсора в такой ситуации?
 
Последнее редактирование:

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@CerberPic, никак. При выполнения какого либо стороннего экшиона в модификаторах заодно срабатывает default action. Это надо в реквест написать видимо. Есть скрипт от Михаила по разрезанию айтемов, назначающийся на тот же модификатор - тоже перемещается курсор. Поэтому можно воспользоваться какими нибудь шорткатами, другими кнопками на мыши - боковое нажатие колеса, боковые кнопки
 
Последнее редактирование:

Rsay

New Member
27 Окт 2017
26
3
3
33
@CerberPic, эта шткуковина с перемищением при каждом действии мне уже поднадоела.... Но идея фьючер реквест наверное самая реальная...
 
Последнее редактирование:

Rsay

New Member
27 Окт 2017
26
3
3
33
@CerberPic, Слушай, решил я твоей проблемой озадачится. Подумал: "а что сделать если сделать модификатор а ля Левый клик - выделение под айтемом"... А потом подумал: "Стоп, так у меня ведь курсор не прыгает, я же все что можно уже по перенастраивал по этому поводу"..
Открыл Рипер, таки да, у меня левый клик не перемещает эдит курсор
upload_2018-4-21_21-2-11.png
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@Rsay, не, ну лично когда курсор перемещается по нажатии на сетку, это удобно) Меня наоборот бесило, что надо все время жать на этот тайм лайн в других DAW. Хотя если треки забиты по длине и по вертикале, разницы не чувствуешь. Но вот в midi editor это весьма и весьма. Ибо зачем нажимать на сетку, если ничего не просходит? Если unselect - то зажать какой-нибудь alt.
 

Rsay

New Member
27 Окт 2017
26
3
3
33
@borisuperful, на сетку или окно аранжа или айтем? Или мы о разном (судя по моему скриншоту)... Ну а так мне лично ничего не мешает перемещение курсора по айтему (да и не только) сделать на СКМ, а ЛКМ по айтему выделение, а ЛКМ в окне аранжа перемещение
 

CerberPic

Member
17 Фев 2017
70
22
8
35
@Rsay , у меня до сего момента всё так и было выставлено. Но если поставить любой другой экшн или скрипт, то курсор начинает бегать.
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@Rsay, нет, я именно про окно аранжа говорю. На айтеме не особо нужен курсор, ну или я наверное использую интервалы между айтемами, там как раз можно курсор поставить
 

Rsay

New Member
27 Окт 2017
26
3
3
33
@CerberPic, а если использовать волшебный риперэкшен? То есть объединить в одном кастоме:
1. Выделить айтем под курсором. 2. Твой скрипт. ?
 

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
Там именно проблема преждевременного выполнения дефолтного экшиона - он выделяет айтем + двигает курсор. И он делается до стороннего экшиона или скрипта в модификаторах мыши. Не поможет даже save restore cursor position, потому что опять же этот save должен быть до дефолтного экшиона. Фишка в том, что до стороннего экшиона или скрипта должен быть "no action". Мне кажется данный функционал не представляет сложности добавить. В виде галки в настройках mouse modifiers (в некоторых разделах модификаторах бывает по одной галке). А может быть добавить возможность указать любой из дефолтных модификаторов до выполнения стороннего экшиона или скрипта
 
Последнее редактирование:

CerberPic

Member
17 Фев 2017
70
22
8
35
@Rsay, так в скрипте уже прописано действие по выделению айтема. А курсор перемещается до запуска скрипта. Можно смоделировать ситуацию, когда на левый клик по айтему не будет назначено ничего (к примеру, назначить какой-нибудь скрипт или кастом, а потом его удалить из списка экшенов). И даже в этом случае при клике на айтем он будет выделяться с перемещением курсора.

@borisuperful, если бы можно было делать save/restore курсора, я бы сидел и молча радовался (средствами скрипта ничего мелькать не будет). Но опять же, курсор передвигается раньше, чем скрипт начинает работу. И если он получает позицию курсора, то уже ту, что после сдвига.
 

Rsay

New Member
27 Окт 2017
26
3
3
33
@CerberPic, тогда нужно клавишей пользоватнся... Наводиш на айтем и жмешь клавишу... либо на клик+модификатор по панели трека
а скрипт прикольный кстати, только как по мне, то не хватает, что бы красился в цвет дорожки
 

CerberPic

Member
17 Фев 2017
70
22
8
35
@Rsay, удали вот эту строку в конце
PHP:
reaper.SetMediaItemInfo_Value(item, 'I_CUSTOMCOLOR', 20788777.0)
и будет краситься. Мне-то это как раз не нужно. :)
 

CerberPic

Member
17 Фев 2017
70
22
8
35
@Rsay, он в общем-то так и делает. Уже не помню, зачем я назначил удаление/создание вместо назначения новых границ (в случае, если начало/конец айтема не совпадает с началом/концом дочерних айтемов). Вот такой вариант даже лучше:
PHP:
reaper.Undo_BeginBlock()
reaper.PreventUIRefresh(-1)
for i = 0, reaper.CountMediaItems(0) - 1 do
    reaper.SetMediaItemSelected(reaper.GetMediaItem(0, i), false)
end
reaper.BR_GetMouseCursorContext()
local item = reaper.BR_GetMouseCursorContext_Item()
if not item then return end
reaper.SetMediaItemSelected(item, true)
local tr = reaper.GetMediaItemTrack(item)
if reaper.GetMediaTrackInfo_Value(tr, 'I_FOLDERDEPTH') ~= 1 then return end
reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_SAVESEL',0) -- SWS: Save current track selection

local t_pos, t_end = {}, {}
reaper.SetOnlyTrackSelected(tr)
reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_SELCHILDREN',0) -- Select only children of selected folders
folder_item = reaper.GetTrackMediaItem (tr, 0)
for s = 0, reaper.CountSelectedTracks(0) - 1 do
    local child = reaper.GetSelectedTrack(0, s)
    for i = 0, reaper.CountTrackMediaItems(child) - 1 do
        local ch_item = reaper.GetTrackMediaItem(child, i)
        reaper.SetMediaItemSelected(ch_item, true)
        if ch_item then
            local pos = reaper.GetMediaItemInfo_Value(ch_item, 'D_POSITION')
            table.insert(t_pos, pos)
            local lng = reaper.GetMediaItemInfo_Value(ch_item, 'D_LENGTH')
            local fin = pos + lng
            table.insert(t_end, fin)
        end
    end
end
table.sort(t_pos)
table.sort(t_end)
local starttime = t_pos[1]
local endtime = t_end[#t_end]
if starttime and endtime then
    local startQN = reaper.TimeMap2_timeToQN(0, starttime)
    local endQN = reaper.TimeMap2_timeToQN(0, endtime)
    reaper.MIDI_SetItemExtents(folder_item, startQN, endQN )
    reaper.SetMediaItemInfo_Value(folder_item, 'B_LOOPSRC', 0)
    reaper.SetMediaItemSelected(folder_item, true)
end
reaper.Main_OnCommand(reaper.NamedCommandLookup'_SWS_RESTORESEL',0) -- SWS: Restore saved track selection
reaper.UpdateArrange()
reaper.PreventUIRefresh(1)
reaper.Undo_EndBlock("Change media item selection", -1)
 

Rsay

New Member
27 Окт 2017
26
3
3
33
Сделал такую штуковину, только не могу разобраться как определить границы верхнего и нижнего порога (решено). что бы поставить ограничение и бывают глюки в айтемах автоматизации, которые я тоже не могу понять как вылечить, т.к. они не предсказуемы
(пс.первый раз ввел близкое значение из-за этого изменения не видны)

Подскажите почему не работает блок Undo (не отображается в окне отмены), хотя в строке меню он отображается? (Решено постом ниже)

@borisuperful, можешь глянуть

PS. с ограничениями разобрался, но хотелось бы узнать какие есть варианты
 

Вложения

Последнее редактирование:

Rsay

New Member
27 Окт 2017
26
3
3
33
Почему скрипт не отображается в окне undo я понял, но как решить данный баг понятия не имею
Undo_history_bug.gif

PS. Джастин написал, что это баг и предложил рабочее решение:
https://forum.cockos.com/showthread.php?p=1982650#post1982650
 
Последнее редактирование:

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@Aleksandr Oleynik, Саша здравствуйте, Если помните я поднимал тему по поводу автоматизации выделенной зоны итема по Pre Fx, Post Fx...... и тд Чтобы одним нажатием понижать или повышать уровни Volume с созданием четырех точек с и плавным переходом на нужные Db Пример - Выделяем зону нажимаем экшн он открывает на итеме допустим Pre Volume создает четыре точки автоматизации (поинижает-повишает внутринее точки на 3-6Db) и потом снова закрывает вуализацию автоматизации на итеме и снимает выделенную зону. Если вас заинтересует данная задача буду рад ибо очень много работаю с вокалом + минус (Дыхание ессссски.... и все такое)
 

Erundolog

Active Member
4 Ноя 2016
345
68
28
Армавир
@Maestro Sound, у меня это вот так организовано.
Если устроит скину данные

Просто зачем показывать автоматизацию и потом скрывать ?
 
Последнее редактирование:

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