@naash_g, для вас было бы идеально иметь один скрипт на колесо, который в зависимости от контекста (курсор над TCP, MCP или Items) везде изменял бы громкость шагом в 1 Db. К сожалению, я не являюсь опытным "скриптостроителем" и не смогу вам пока помочь, но может, кто-нибудь, всё-таки, откликнется из умельцев.
Так тебе никто и не помог.
Скрипты работают на айтемах,треках и микшере*.
*Первых два скрипта в микшере работают, а третий который на колесо мыши к сожалению в микшере не работает, потому что поломалось апи функция "get_action_context" и надо писать по этому поводу разрабам.
Чем смог, тем помог.
JavaScript:
--Archie_var; Volume down on tracks or items by 1 dB.lua
-------------
local DB = -1
-------------
---------------------------------------------------------
local function no_undo();reaper.defer(function()end);end;
---------------------------------------------------------
----------------------------------------------------
local screen_x,screen_y = reaper.GetMousePosition()
local item, take = reaper.GetItemFromPoint(screen_x,screen_y,false)
local track,info = reaper.GetTrackFromPoint(screen_x,screen_y)
if item then
local vol = reaper.GetMediaItemInfo_Value( item, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaItemInfo_Value(item,"D_VOL",(10^((vol+DB)/20)))
elseif info == 0 then
if track then
local vol = reaper.GetMediaTrackInfo_Value( track, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaTrackInfo_Value(track,"D_VOL",(10^((vol+DB)/20)))
end
end
reaper.UpdateArrange()
----------------------------------------------------
no_undo()
JavaScript:
--Archie_var; Volume up on tracks or items by 1 dB.lua
------------
local DB = 1
------------
---------------------------------------------------------
local function no_undo();reaper.defer(function()end);end;
---------------------------------------------------------
----------------------------------------------------
local screen_x,screen_y = reaper.GetMousePosition()
local item, take = reaper.GetItemFromPoint(screen_x,screen_y,false)
local track,info = reaper.GetTrackFromPoint(screen_x,screen_y)
if item then
local vol = reaper.GetMediaItemInfo_Value( item, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaItemInfo_Value(item,"D_VOL",(10^((vol+DB)/20)))
elseif info == 0 then
if track then
local vol = reaper.GetMediaTrackInfo_Value( track, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaTrackInfo_Value(track,"D_VOL",(10^((vol+DB)/20)))
end
end
reaper.UpdateArrange()
----------------------------------------------------
no_undo()
JavaScript:
--Archie_var; Volume change on tracks or items by 1 dB (mouse wheel).lua
------------
local DB = 1
------------
---------------------------------------------------------
local function no_undo();reaper.defer(function()end);end;
---------------------------------------------------------
----------------------------------------------------
local _,_,_,_,_,_,val = reaper.get_action_context()
if val <= 0 then
DB = DB-DB*2
end
----------------------------------------------------
----------------------------------------------------
local screen_x,screen_y = reaper.GetMousePosition()
local item, take = reaper.GetItemFromPoint(screen_x,screen_y,false)
local track,info = reaper.GetTrackFromPoint(screen_x,screen_y)
if item then
local vol = reaper.GetMediaItemInfo_Value( item, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaItemInfo_Value(item,"D_VOL",(10^((vol+DB)/20)))
elseif info == 0 then
if track then
local vol = reaper.GetMediaTrackInfo_Value( track, 'D_VOL' )
local vol = 20 * math.log(vol,10);
reaper.SetMediaTrackInfo_Value(track,"D_VOL",(10^((vol+DB)/20)))
end
end
reaper.UpdateArrange()
----------------------------------------------------
no_undo()
@Archie's,спасибо огромное! Если починят-сможете сделать? или он готов, только нужно разрабов дождаться?
Еще вопрос-как мне отсюда эти скрипты скачать правильно без ошибок?
А был скрипт/экшн для группирования панорамы и уровня выбранных треков?
Нужен ещё такой, чтобы добавлял Pan Reverse для выделенных треков, уже состоящих в группах.
@naash_g, если вас интересует именно как правильно скопировать, то, если развернуть код, в правом верхнем углу есть специальная кнопка. Но если вас интересует вся процедура, то нужно создать через экшн лист новый скрипт, поместить туда скопированный код и сохранить его.
На всякий случай мультик:
Подскажите как настроить, чтобы кастомный плагин открывался в цепи. До обновления sws всё работало! На гиф загрузил синт, покрутил ручку, фокус сместился. (Нужно чтобы открылся Pro Q3)
Такой Custom: Vst
SWS/S&M: Resources - Paste FX chain to selected tracks, slot 1
SWS/S&M: Show FX chain for selected tracks (selected FX)
SWS/S&M: Select last FX for selected tracks
Добрый день. Ребят, помогите допилить экшн, пожалуйста.
Тейп стоп экшн. Он применяет js fx (spin down) к айтему. И хотелось бы, чтобы параметр Time сразу появлялся на айтеме в виде автоматизации (Как на фото). Заранее спасибо!
Подскажите пожалуйста скрипт, возвращающий фокус на выделенный плагин в окне эффектов? Нужно для того, чтобы следующий загружаемый "кнопкой" плагин не просто загружался, но и открывался! Как писал ранее, перестало работать после обновления sws.
Помогите, кто-нибудь советом, пожалуйста. Есть начало скрипта. Вот код, с помощью которого я получаю высоту выделенных нот в миди эдиторе:
Код:
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
reaper.Undo_BeginBlock()
local hwnd = reaper.MIDIEditor_GetActive()
local take = reaper.MIDIEditor_GetTake(hwnd)
local retval, notecnt, _, _ = reaper.MIDI_CountEvts(take)
if notecnt > 0 then
for i = 0, notecnt-1 do
retval, sel, _, startpos, endpos, _, pitch, _ = reaper.MIDI_GetNote(take, i)
if sel then
Msg("Midi_note = "..pitch)
end
end
end
reaper.Undo_EndBlock("Get_midi_note", -1)
Выглядит это так:
Вопрос вот в чём. Известен питч всех выделенных нот. Теперь нужно ввести определение, что если питч, например, 36 или 48 или 60( и так далее), то это C, а если питч 43 или 55 или 67 ( и так далее), то это E, (ну и по всем нотам). А дальше - если питч - С +E+G, то это С, а если D+F+A, то это Dmin, и так далее, то есть, в зависимости от того, в какой аккорд складываются выделенные ноты будет какое-то действие с различными вводными, в зависимости от аккорда.
Не могу понять, как написать такое условие. Подскажите, кто-нибудь))
Именно, как оформить, что С = 36 или 48 или 60 и так далее, а С (до мажор) = C+E+G.
Можно, в принципе и сразу, типа, если питч такой-то (перечислить все цифры всех возможных нот данного аккорда), то действие такое-то. Но это будет не совсем нормально для дальнейшей работы со скриптом.
Парни, не могу найти аналог , Reduce Number of Points (Envelope), в midi СС , в эдиторе. Реквест есть, https://forum.cockos.com/showthread.php?t=237600. Может быть, уже что то сделали с этим запросом, и есть скрипт?
Парни, не могу найти аналог , Reduce Number of Points (Envelope), в midi СС , в эдиторе. Реквест есть, https://forum.cockos.com/showthread.php?t=237600. Может быть, уже что то сделали с этим запросом, и есть скрипт?
Помогите, кто-нибудь советом, пожалуйста. Есть начало скрипта. Вот код, с помощью которого я получаю высоту выделенных нот в миди эдиторе:
Код:
function Msg(param)
reaper.ShowConsoleMsg(tostring(param).."\n")
end
reaper.Undo_BeginBlock()
local hwnd = reaper.MIDIEditor_GetActive()
local take = reaper.MIDIEditor_GetTake(hwnd)
local retval, notecnt, _, _ = reaper.MIDI_CountEvts(take)
if notecnt > 0 then
for i = 0, notecnt-1 do
retval, sel, _, startpos, endpos, _, pitch, _ = reaper.MIDI_GetNote(take, i)
if sel then
Msg("Midi_note = "..pitch)
end
end
end
reaper.Undo_EndBlock("Get_midi_note", -1)
Вопрос вот в чём. Известен питч всех выделенных нот. Теперь нужно ввести определение, что если питч, например, 36 или 48 или 60( и так далее), то это C, а если питч 43 или 55 или 67 ( и так далее), то это E, (ну и по всем нотам). А дальше - если питч - С +E+G, то это С, а если D+F+A, то это Dmin, и так далее, то есть, в зависимости от того, в какой аккорд складываются выделенные ноты будет какое-то действие с различными вводными, в зависимости от аккорда.
Не могу понять, как написать такое условие. Подскажите, кто-нибудь))
Именно, как оформить, что С = 36 или 48 или 60 и так далее, а С (до мажор) = C+E+G.
Можно, в принципе и сразу, типа, если питч такой-то (перечислить все цифры всех возможных нот данного аккорда), то действие такое-то. Но это будет не совсем нормально для дальнейшей работы со скриптом.
Просто хотел отписать, насчет старенького, но очень правильного и надежного скрипта - MIDI Velocity tool. Со временем в ReaScript появилась возможность создания скрепки, чтобы окно прикрепить на виду, но эта функция делается через js_API и соответственно в обозреваемом скрипте нету. Для этого требуется добавить в конце кода следующие строчки. Можно в самом конце, можно перед run, главное после unit, иначе не инициализируется. После этого появится скрепка в шапке окна
Просто хотел отписать, насчет старенького, но очень правильного и надежного скрипта - MIDI Velocity tool. Со временем в ReaScript появилась возможность создания скрепки, чтобы окно прикрепить на виду, но эта функция делается через js_API и соответственно в обозреваемом скрипте нету. Для этого требуется добавить в конце кода следующие строчки. Можно в самом конце, можно перед run, главное после unit, иначе не инициализируется. После этого появится скрепка в шапке окна
В похожем, от того же разработчика скрипте Smooth CCs, то же самое можно сделать? Заменил в ковычках название "MIDI Velocity/CC tool". на "Smooth CCs" выдаёт ошибку 'JS_Window_AttachTopmostPin' argument 1: expected void*
Вместо AND только OR(мой косяк,т.к. условие с оператором and всегда будет false при любом значении value).Если честно получится портянка(не есть хорошо)По поиску определения ноты отдельной ,проще делить с остатком(оператор %[будет находить имя ноты,но без октавы,для октавы придется усложнять прописывать отдельно])В Lua и API Reapera я не шарю,попробую на EEL.
@Trasher, спасибо, ещё не брался, чуть позже буду разбираться. Октава на самом деле не нужна. Мне наоборот нужно обобщить. Если определения более сложных аккордов, там важнее просто самая нижняя нота, так как аккорды по басу определяются в большинстве случаев. Но это не сейчас. Пока мне достаточно информации. Я очень слаб пока в создании скриптов. Уже большое спасибо)))) Если что, я отпишусь))) Или переспрошу))))
В похожем, от того же разработчика скрипте Smooth CCs, то же самое можно сделать? Заменил в ковычках название "MIDI Velocity/CC tool". на "Smooth CCs" выдаёт ошибку 'JS_Window_AttachTopmostPin' argument 1: expected void*
Коллеги, подскажите пожалуйста! Я в теме @Archie's, проблему свою описал по его классным скриптам - Script: Archie_Item; Split (selected) item(s) under mouse cursor(`).lua... https://rmmedia.ru/threads/134701/page-56#post-2588129/ Видно что-то у меня индивидуально подглючивает при разреке айтемов при большом количестве треков, папок и малом вертикальном масштабе, раз больше ни у кого этого не происходит. Я в скриптописании пока не очень.,.)) но вот сделал для себя четыре штуки необходимые для меня, нормально работающих при моей индивидуальной проблеме кроме одного неудобства, которое преодолеть я надеюсь вы мне подскажите как.
Смысл такой.
В модификаторах я повесил скрипты на клик колёсика, - при дефолте режет и снимает выделения с айтемов, с Shift - не снимает, с Ctrl - выделяет левую часть разрезанных айтемов, а при Alt - правую сторону. Привык, - для меня логично!)
Иногда, когда случайно применю любой этот свой доморощенный)) скрипт, НО не на айтеме, а на пустом треке, то режет все айтемы вертикально, сверху и снизу. Есть же какой-то код - правило, который будет разрешать разрезать айтем только когда курсор мыши находится надайтемом, а не над треком?
Скрипты:
то режет все айтемы вертикально, сверху и снизу. Есть же какой-то код - правило, который будет разрешать разрезать айтем только когда курсор мыши находится надайтемом, а не над треком?
Ой я не заметил что твои скрипты ееэль, исправь свои на луа, данный например код вообще без условий, просто исправь расширения на луа и в коде комментарии переделать, переднии знаки. Или нужно кого-либо просить чтобы моё условие переписали в ееэль, я бы и сам одну строку переписал, но не могу сейчас