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

Archie's

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

Вложения

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
@Archchie, спасибо большое, работает как нужно. А можно, если не сильно сложно, его немного допилить. Суть такая:
если не активирована привязка SNAP, то работал как сейчас, т.е. резал точно по линии курсора
а если активирована привязка, то резал по ближайшей к курсору мыши линии сетки, согласно выбранного режима (1/2, 1/4, 1/8 и т.д.

ну или как вариант еще один отдельный скрипт для разрезания по ближайшему к курсору линии сетки
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
ну или как вариант еще один отдельный скрипт для разрезания по ближайшему к курсору линии сетки
Так это же было сделано в предыдущем скрипте.
Screenshot_1.png
если не активирована привязка SNAP, то работал как сейчас, т.е. резал точно по линии курсора
а если активирована привязка, то резал по ближайшей к курсору мыши линии сетки, согласно выбранного режима (1/2, 1/4, 1/8 и т.д.
 

Вложения

  • Like
Реакции: Supa75

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
А вот интересует (ща работаю над двумя проектами Electro Swing) Можно ли сделать скриптами регулировку процентов сдвига Swing? Допустим +1% -1% или сразу статичные 20-50-75% а лучше и те и другие отдельными скриптами.за ранее благодарю
 

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Можно ли сделать скриптами регулировку процентов сдвига Swing? Допустим +1% -1% или сразу статичные 20-50-75% а лучше и те и другие отдельными скриптами.за ранее благодарю
Обновленно:
 

Вложения

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

Vilia33

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

Вложения

  • 799,8 KB Просмотры: 56

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
Хотелось бы ,чтоб треки кроме отрендеренного удалились.
Помогите создать экшн.
Вставь вот этот кусок кода в начало скрипта(где помечено в начало) и в конец скрипта (где помечено в конец)
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

Vilia33

Active Member
8 Ноя 2009
418
103
43
@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

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
Одним скриптом на Mouse Modifiers 2 in 1 (Удаление итема под курсором, а если при этом выделен таймселекшн - то удаление применяется к частям итема под курсором попадающих в район выделения)
 

Nagor

Active Member
4 Окт 2010
723
128
43
@Vilia33, для миди айтемов подойдёт? Например объединить хеты, закрытый, открытый, педаль в один трек.
 

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Друзья, есть догадки, что я делаю не так?
Код:
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
 

PianoIst

Well-Known Member
19 Май 2010
4.091
4.143
113
29
Kirchberg, kreis Zwickau
soundcloud.com
так, еще раз покурил доки, переписал:
Код:
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 на конце.
 
Последнее редактирование:

Vilia33

Active Member
8 Ноя 2009
418
103
43
@Nagor, Надо пробовать может и подойдёт но я предполагаю, что скрипт будет рендерить
вместе с VSTI инструментами в аудио файл.
 
  • Like
Реакции: Nagor

Psyfacktor

Member
2 Апр 2016
71
30
18
38
Есть єкшн - sws/s&m: set selected tracks midi input to channel 1. А можно ли сделать скритп который не канал меняет на дорожке, а само устройство? Щас вроде подвезли новых функций и щас все подключенные устройства имеют свой id, значит можно как то научить программу какое устройство я хочу на дорожку кинуть.
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Есть єкшн - sws/s&m: set selected tracks midi input to channel 1. А можно ли сделать скритп который не канал меняет на дорожке, а само устройство? Щас вроде подвезли новых функций и щас все подключенные устройства имеют свой id, значит можно как то научить программу какое устройство я хочу на дорожку кинуть.
И раньше можно было. В API доступ формируется по списку активных девайсов.
 

Psyfacktor

Member
2 Апр 2016
71
30
18
38
Ну вот есть у меня два устройства, и я хочу иметь экшн или скрипт который бы переключал вход трэка на нужное устройство. В иделе я вижу это так что при нажатии клавиши 1, в инпут трэка вставлялась миди клавиатура, и выставлялся 7 канал; при нажатии 2 в инпут ставиться другой контроллер с каналом 2; клавиша три вставляет тоже второе устройство но с каналом 3.
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Ну вот есть у меня два устройства, и я хочу иметь экшн или скрипт который бы переключал вход трэка на нужное устройство. В иделе я вижу это так что при нажатии клавиши 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

HDVulcan

Active Member
23 Окт 2016
176
37
28
Приветствую всех!

На шкале метер "Mixer Master" отображаются значения Peak и Rms и если по этим значениям кликнуть мышкой, то они сбрасываются.
Кто может, сделайте пожалуйста скрипт, чтобы можно было делать это сбрасывание через горячую клавишу, запуская скрипт.
 

Supa75

Active Member
21 Мар 2017
672
164
43
48
Днепр, Украина
Кто может, сделайте пожалуйста скрипт, чтобы можно было делать это сбрасывание через горячую клавишу, запуская скрипт.
А Вам нужно сбросить только на MASTER? Есть экшн "View: Clear all peak indicators", который сбрасывает все индикаторы
 
  • Like
Реакции: HDVulcan

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