Помогите создать экшн / кастом экшн / скрипт

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Вроде бы мелочь, но как-то стал обращать внимание на то, что новые плагины загружаются не по центру. Есть скрипт Script: mpl_Move focused Track FX to screen center.lua. Но он работает только после того, как откроешь эффект.
Возможно ли написать скрипт, который сделает float selected FX for selected tracks, но сразу в центре?
 
P.S. как вам моя идея про скрипт для редактирования значения точки автоматизации путём прокрутки колеса мышки?
нормальная идея, но нет времени даже в общих чертах глянуть что и как...
Из одной поездки - в другую, с собой только iPad.
 
Возможно ли написать скрипт, который сделает float selected FX for selected tracks, но сразу в центре?
Немного не корректно работает. В зависимости от размера плагина открывается по разному. Хотелось бы, по возможности, чтобы все плагины открывались левым верхним углом в одной, заданной точке.
 
@Wefilev, не знаю, постоянно приходится двигать плагин к центру, чтобы он не закрывал боковой интерфейс.
Ну или даже, если не selected FX, то можно last FX. По сути это нужно после того, как загружаешь плагин кнопкой SWS, а он загружает плагин в конец цепочки эффектов
В идеале, создать еще условие, если хоть немного я сдвину координаты окна относительно центра, то открывать плагин не в центре а в соответствии с последними координатами.
Но это необязательно, можно только для единичного открытия использовать
 
Последнее редактирование:
  • Like
Реакции: fractala
Кто-нибудь может помочь и создать отдельный скрипт копирующий по функционалу экшен "Spectrogram: Add spectral edit to item".
Этот экшен всегда запускается с нулевыми значениями по умолчанию. И приходится все время тратить время на настройку определенных шаблонов.
"Spectral edit to item preset".Смысл скрипта в том чтобы можно было задавать вручную и сохранить свои готовые параметры: Spectral region gane", все параметры fade in и fade out и т.д.,
т.е. задавать любые значения на все ползунки и вызывать скрипт по горячей клавише.
 
Последнее редактирование:
Ребята, можно как-то сделать, что бы при вводе значений Рипер так же реагировал как и эта программа?
Выделяю пару точек, ввожу значение для самой нижней и они пропорционально поднимаются... если точка достигает пика. то она там и остается
(на данный момент при выделении множества точек я могу ввести значение только для одной,
или есть скрипт, которым можно вводить для многих, но только одно значение для всех)
Apoints%2B.gif

Apoints.gif
 
Последнее редактирование:
Пацаны,подскажите скрипт чтобы в открытом миди редакторе выделился трек открытого итема.
 
Ребята, можно как-то сделать, что бы при вводе значений Рипер так же реагировал как и эта программа?
Выделяю пару точек, ввожу значение для самой нижней и они пропорционально поднимаются... если точка достигает пика. то она там и остается
(на данный момент при выделении множества точек я могу ввести значение только для одной,
или есть скрипт, которым можно вводить для многих, но только одно значение для всех)
+ 1 к скрипту для точек.
 
Последнее редактирование:
borisuperful Я выделяю айтем правой кнопкой,и открываю горячей клавишей чтобы не сбиться с такта,мне так легче проверять миди дорожки на наличие ошибок.
 
@muzicgrand, если открываешь горячей клавишей, сделай кастом, первым пунктом добавь скрипт Script: X-Raym_Select only tracks of selected items.lua
 
  • Like
Реакции: muzicgrand
Подскажите пожалуйста.
Преамбула. Я в своих проектах использую пустые миди-айтемы на треках-папках, по длине равные содержимому этих самых папок. Создаются они автоматически при создании папок специально написанным для этого скриптом.
Суть вопроса. Сегодня я написал скрипт для назначения его на 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)
И всё бы хорошо, но раздражает перемещаемый эдит курсор при кликах на айтемах. Пробовал сохранять и восстанавливать позицию курсора, но в итоге пришёл к выводу, что курсор перемещается до запуска скрипта.
Вопрос. Как запретить перемещение курсора в такой ситуации?
 
Последнее редактирование:
@CerberPic, никак. При выполнения какого либо стороннего экшиона в модификаторах заодно срабатывает default action. Это надо в реквест написать видимо. Есть скрипт от Михаила по разрезанию айтемов, назначающийся на тот же модификатор - тоже перемещается курсор. Поэтому можно воспользоваться какими нибудь шорткатами, другими кнопками на мыши - боковое нажатие колеса, боковые кнопки
 
Последнее редактирование:
@CerberPic, эта шткуковина с перемищением при каждом действии мне уже поднадоела.... Но идея фьючер реквест наверное самая реальная...
 
Последнее редактирование:
@CerberPic, Слушай, решил я твоей проблемой озадачится. Подумал: "а что сделать если сделать модификатор а ля Левый клик - выделение под айтемом"... А потом подумал: "Стоп, так у меня ведь курсор не прыгает, я же все что можно уже по перенастраивал по этому поводу"..
Открыл Рипер, таки да, у меня левый клик не перемещает эдит курсор
upload_2018-4-21_21-2-11.png
 
@Rsay, не, ну лично когда курсор перемещается по нажатии на сетку, это удобно) Меня наоборот бесило, что надо все время жать на этот тайм лайн в других DAW. Хотя если треки забиты по длине и по вертикале, разницы не чувствуешь. Но вот в midi editor это весьма и весьма. Ибо зачем нажимать на сетку, если ничего не просходит? Если unselect - то зажать какой-нибудь alt.
 
@borisuperful, на сетку или окно аранжа или айтем? Или мы о разном (судя по моему скриншоту)... Ну а так мне лично ничего не мешает перемещение курсора по айтему (да и не только) сделать на СКМ, а ЛКМ по айтему выделение, а ЛКМ в окне аранжа перемещение
 
@Rsay , у меня до сего момента всё так и было выставлено. Но если поставить любой другой экшн или скрипт, то курсор начинает бегать.
 
@Rsay, нет, я именно про окно аранжа говорю. На айтеме не особо нужен курсор, ну или я наверное использую интервалы между айтемами, там как раз можно курсор поставить
 
@CerberPic, а если использовать волшебный риперэкшен? То есть объединить в одном кастоме:
1. Выделить айтем под курсором. 2. Твой скрипт. ?
 
Там именно проблема преждевременного выполнения дефолтного экшиона - он выделяет айтем + двигает курсор. И он делается до стороннего экшиона или скрипта в модификаторах мыши. Не поможет даже save restore cursor position, потому что опять же этот save должен быть до дефолтного экшиона. Фишка в том, что до стороннего экшиона или скрипта должен быть "no action". Мне кажется данный функционал не представляет сложности добавить. В виде галки в настройках mouse modifiers (в некоторых разделах модификаторах бывает по одной галке). А может быть добавить возможность указать любой из дефолтных модификаторов до выполнения стороннего экшиона или скрипта
 
Последнее редактирование:
@Rsay, так в скрипте уже прописано действие по выделению айтема. А курсор перемещается до запуска скрипта. Можно смоделировать ситуацию, когда на левый клик по айтему не будет назначено ничего (к примеру, назначить какой-нибудь скрипт или кастом, а потом его удалить из списка экшенов). И даже в этом случае при клике на айтем он будет выделяться с перемещением курсора.

@borisuperful, если бы можно было делать save/restore курсора, я бы сидел и молча радовался (средствами скрипта ничего мелькать не будет). Но опять же, курсор передвигается раньше, чем скрипт начинает работу. И если он получает позицию курсора, то уже ту, что после сдвига.
 
@CerberPic, тогда нужно клавишей пользоватнся... Наводиш на айтем и жмешь клавишу... либо на клик+модификатор по панели трека
а скрипт прикольный кстати, только как по мне, то не хватает, что бы красился в цвет дорожки
 
@Rsay, удали вот эту строку в конце
PHP:
reaper.SetMediaItemInfo_Value(item, 'I_CUSTOMCOLOR', 20788777.0)
и будет краситься. Мне-то это как раз не нужно. :)
 
@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)
 
Сделал такую штуковину, только не могу разобраться как определить границы верхнего и нижнего порога (решено). что бы поставить ограничение и бывают глюки в айтемах автоматизации, которые я тоже не могу понять как вылечить, т.к. они не предсказуемы
(пс.первый раз ввел близкое значение из-за этого изменения не видны)

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

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

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

Вложения

  • ASM Set point value.zip
    ASM Set point value.zip
    2,3 KB · Просмотры: 67
  • Point_Script.gif
    Point_Script.gif
    753,5 KB · Просмотры: 405
Последнее редактирование:
Почему скрипт не отображается в окне undo я понял, но как решить данный баг понятия не имею
Undo_history_bug.gif

PS. Джастин написал, что это баг и предложил рабочее решение:
https://forum.cockos.com/showthread.php?p=1982650#post1982650
 
Последнее редактирование:
@Aleksandr Oleynik, Саша здравствуйте, Если помните я поднимал тему по поводу автоматизации выделенной зоны итема по Pre Fx, Post Fx...... и тд Чтобы одним нажатием понижать или повышать уровни Volume с созданием четырех точек с и плавным переходом на нужные Db Пример - Выделяем зону нажимаем экшн он открывает на итеме допустим Pre Volume создает четыре точки автоматизации (поинижает-повишает внутринее точки на 3-6Db) и потом снова закрывает вуализацию автоматизации на итеме и снимает выделенную зону. Если вас заинтересует данная задача буду рад ибо очень много работаю с вокалом + минус (Дыхание ессссски.... и все такое)
 
@Maestro Sound, у меня это вот так организовано.

Если устроит скину данные

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

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