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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Нужен скрипт "Split selected item under mouse cursor and select left". Обычный экшен "Item: Split item under mouse cursor (select left)" есть в стандартном списке экшенов, но он не подходит, т.к. мне нужно нужно резать ВСЕ выделенные айтемы на разных треках по линии, где находится курсор мыши, и при этом во всех разрезанных айтемах оставлять выеленную левую часть после разреза.
Может кто-то помочь сделать такой скрипт?
 

Вложения

@Archchie, спасибо большое, работает как нужно. А можно, если не сильно сложно, его немного допилить. Суть такая:
если не активирована привязка SNAP, то работал как сейчас, т.е. резал точно по линии курсора
а если активирована привязка, то резал по ближайшей к курсору мыши линии сетки, согласно выбранного режима (1/2, 1/4, 1/8 и т.д.

ну или как вариант еще один отдельный скрипт для разрезания по ближайшему к курсору линии сетки
 
ну или как вариант еще один отдельный скрипт для разрезания по ближайшему к курсору линии сетки
Так это же было сделано в предыдущем скрипте.
Screenshot_1.png
если не активирована привязка SNAP, то работал как сейчас, т.е. резал точно по линии курсора
а если активирована привязка, то резал по ближайшей к курсору мыши линии сетки, согласно выбранного режима (1/2, 1/4, 1/8 и т.д.
 

Вложения

  • Like
Реакции: Supa75
А вот интересует (ща работаю над двумя проектами Electro Swing) Можно ли сделать скриптами регулировку процентов сдвига Swing? Допустим +1% -1% или сразу статичные 20-50-75% а лучше и те и другие отдельными скриптами.за ранее благодарю
 
Можно ли сделать скриптами регулировку процентов сдвига Swing? Допустим +1% -1% или сразу статичные 20-50-75% а лучше и те и другие отдельными скриптами.за ранее благодарю
Обновленно:
 

Вложения

Последнее редактирование:
На гифке видно рендер айтемов находящихся на разных треках в один трек
скриптом Script: Render selected items on one separate track1.lua
Хотелось бы ,чтоб треки кроме отрендеренного удалились.
Помогите создать экшн.
 

Вложения

  • 444.gif
    444.gif
    799,8 KB · Просмотры: 74
Хотелось бы ,чтоб треки кроме отрендеренного удалились.
Помогите создать экшн.
Вставь вот этот кусок кода в начало скрипта(где помечено в начало) и в конец скрипта (где помечено в конец)
PHP:
   ------------------ В начало -----------------------
    local function SaveSelTracksGuid()
        reaper.PreventUIRefresh(123456789)
        reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
        reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
        for i = 1,reaper.CountSelectedMediaItems( 0 ) do
            reaper.SetTrackSelected(reaper.GetMediaItem_Track
           (reaper.GetSelectedMediaItem(0,i-1)),1)
        end
        sel_tracks = {}
        for i = 1, reaper.CountSelectedTracks(0) do
            sel_tracks[i]=reaper.GetTrackGUID(reaper.GetSelectedTrack(0,i-1))
        end
    end
    ---
    local function RestoreSelTracksGuid()
        reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
        reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
        for i = 1, #sel_tracks do
        local track = reaper.BR_GetMediaTrackByGUID(0,sel_tracks[i])
            if track then
                reaper.SetTrackSelected(track,1)
            end
        end
        reaper.Main_OnCommand( 40005, 0 )
        reaper.PreventUIRefresh(-123456789)
    end
    SaveSelTracksGuid()
    ------------------------------------------------------------
  
              ------------  ТВОЙ СКРИПТ ------------
  
    -----В конец----------
    RestoreSelTracksGuid()
    ----------------------
 
Последнее редактирование:
  • Like
Реакции: Maestro Sound
@Maestro Sound,
local function SaveSelTracksGuid()
reaper.PreventUIRefresh(123456789)
reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
for i = 1,reaper.CountSelectedMediaItems( 0 ) do
reaper.SetTrackSelected(reaper.GetMediaItem_Track
(reaper.GetSelectedMediaItem(0,i-1)),1)
end
sel_tracks = {}
for i = 1, reaper.CountSelectedTracks(0) do
sel_tracks=reaper.GetTrackGUID(reaper.GetSelectedTrack(0,i-1))
end
end
---
local function RestoreSelTracksGuid()
reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
for i = 1, #sel_tracks do
local track = reaper.BR_GetMediaTrackByGUID(0,sel_tracks)
if track then
reaper.SetTrackSelected(track,1)
end
end
reaper.Main_OnCommand( 40005, 0 )
reaper.PreventUIRefresh(-123456789)
end
SaveSelTracksGuid()
reaper.Undo_BeginBlock() --call to start a new block
ComandID = "_SWS_SAVETIME1" -- SWS: Save time selection, slot 1
reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
ComandID = 40290 -- Time selection: Set time selection to items
reaper.Main_OnCommand(ComandID,0)
ComandID = 41559 -- Item properties: Solo
reaper.Main_OnCommand(ComandID,0)
ComandID = "_SWS_SELTRKWITEM" -- SWS: Select only track(s) with selected item(s)
reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
ComandID = 41716 -- Track: Render selected area of tracks to stereo post-fader stem tracks (and mute originals)
reaper.Main_OnCommand(ComandID,0)
ComandID = 40421 -- Item: Select all items in track
reaper.Main_OnCommand(ComandID,0)
ComandID = 40644 -- Item: Implode items across tracks into items on one track
reaper.Main_OnCommand(ComandID,0)
ComandID = 41588 -- Item: Glue items
reaper.Main_OnCommand(ComandID,0)
tr = reaper.GetSelectedTrack(0,0) if tr then reaper.SetMediaTrackInfo_Value( tr, 'I_SELECTED', 0 ) end
ComandID = 40005 -- Track: Remove tracks
reaper.Main_OnCommand(ComandID,0)
ComandID = 41560 -- Item properties: Unsolo
reaper.Main_OnCommand(ComandID,0)
ComandID = 40635 -- Time selection: Remove time selection
reaper.Main_OnCommand(ComandID,0)
ComandID = "_SWS_RESTTIME1"
reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
reaper.Undo_EndBlock("Archie_Render selected items on one separate track",1)
RestoreSelTracksGuid()

[DOUBLEPOST=1536869218][/DOUBLEPOST]Теперь ссылка работает
https://cloud.mail.ru/public/3ygV/h9hMatKAH
 
  • Like
Реакции: sve
Одним скриптом на Mouse Modifiers 2 in 1 (Удаление итема под курсором, а если при этом выделен таймселекшн - то удаление применяется к частям итема под курсором попадающих в район выделения)
 
@Vilia33, для миди айтемов подойдёт? Например объединить хеты, закрытый, открытый, педаль в один трек.
 
Друзья, есть догадки, что я делаю не так?
Код:
def create(name: str):
    with Reaper as r:
        r.Undo_BeginBlock()
        sel_item = r.GetSelectedMediaItem(0, 0)
        # take = r.GetActiveTake(sel_item)
        start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
        end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")

        ret = r.AddProjectMarker2(0, 1, start, end, name, 0, 0)
        r.Undo_EndBlock(f'add region with name {name}', -1)
    return ret
создается регион, выглядит и работает как нормальный. Но при создании следующего, или при перезапуске проекта, вообще бе особой системы превращается в проименованный маркер, и непроименованный регион с нулевым размером на конце зоны бывшего региона. И ID у них одинаковый:)
2018-09-14_15-38-55.png
 
так, еще раз покурил доки, переписал:
Код:
def create(name: str):
    with Reaper as r:
        r.Undo_BeginBlock()
        sel_item = r.GetSelectedMediaItem(0, 0)
        # take = r.GetActiveTake(sel_item)
        start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
        end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")

        ret = r.AddProjectMarker(0, True, start, end, name, -1)
        r.Undo_EndBlock(f'add region with name {name}', -1)
    return ret
все равно то же самое.

Ага, проблема, кажись, в том, что Bayond каждую мою команду отсылает как отдельный экшн. И undo работает криво...

хм, это, вроде, помогло:
Код:
def create(name: str):
    with Reaper as r:
        r.Undo_BeginBlock2(0)
        sel_item = r.GetSelectedMediaItem(0, 0)
        # take = r.GetActiveTake(sel_item)
        start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
        end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")

        # start = item_obj._start
        # end = start + item_obj._len

        ret = r.AddProjectMarker(0, True, start, end, name, -1)
        # r.Undo_EndBlock(f'add region with name {name}', -1)
        r.Undo_EndBlock2(0, f'add region with name {name}', -1)
    return ret
нет, нифига...

Короче, баг был там, где не ждал:
У меня имена паттернов сохраненные загружались с символом \n на конце.
 
Последнее редактирование:
@Nagor, Надо пробовать может и подойдёт но я предполагаю, что скрипт будет рендерить
вместе с VSTI инструментами в аудио файл.
 
  • Like
Реакции: Nagor
Есть єкшн - sws/s&m: set selected tracks midi input to channel 1. А можно ли сделать скритп который не канал меняет на дорожке, а само устройство? Щас вроде подвезли новых функций и щас все подключенные устройства имеют свой id, значит можно как то научить программу какое устройство я хочу на дорожку кинуть.
 
Есть єкшн - sws/s&m: set selected tracks midi input to channel 1. А можно ли сделать скритп который не канал меняет на дорожке, а само устройство? Щас вроде подвезли новых функций и щас все подключенные устройства имеют свой id, значит можно как то научить программу какое устройство я хочу на дорожку кинуть.
И раньше можно было. В API доступ формируется по списку активных девайсов.
 
Ну вот есть у меня два устройства, и я хочу иметь экшн или скрипт который бы переключал вход трэка на нужное устройство. В иделе я вижу это так что при нажатии клавиши 1, в инпут трэка вставлялась миди клавиатура, и выставлялся 7 канал; при нажатии 2 в инпут ставиться другой контроллер с каналом 2; клавиша три вставляет тоже второе устройство но с каналом 3.
 
Ну вот есть у меня два устройства, и я хочу иметь экшн или скрипт который бы переключал вход трэка на нужное устройство. В иделе я вижу это так что при нажатии клавиши 1, в инпут трэка вставлялась миди клавиатура, и выставлялся 7 канал; при нажатии 2 в инпут ставиться другой контроллер с каналом 2; клавиша три вставляет тоже второе устройство но с каналом 3.

PHP:
function SetMidiInput(chan, dev_name)
  local tr = reaper.GetSelectedTrack(0,0)
  if not tr then return end
  for i = 0, 64 do
    local retval, nameout = reaper.GetMIDIInputName( i, '' )
    if nameout:lower():match(dev_name:lower()) then dev_id = i end
  end
  if not dev_id then return end
  val = 4096+ chan + ( dev_id << 5  )
  reaper.SetMediaTrackInfo_Value( tr, 'I_RECINPUT',val)
end


SetMidiInput( 2, 'touchosc' )
 
  • Like
Реакции: BAYANBAYAN и Psyfacktor
Приветствую всех!

На шкале метер "Mixer Master" отображаются значения Peak и Rms и если по этим значениям кликнуть мышкой, то они сбрасываются.
Кто может, сделайте пожалуйста скрипт, чтобы можно было делать это сбрасывание через горячую клавишу, запуская скрипт.
 
Кто может, сделайте пожалуйста скрипт, чтобы можно было делать это сбрасывание через горячую клавишу, запуская скрипт.
А Вам нужно сбросить только на MASTER? Есть экшн "View: Clear all peak indicators", который сбрасывает все индикаторы
 
  • Like
Реакции: HDVulcan

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