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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
@Aleksandr Oleynik, однажды я работал на 3х 17шках. Было очень прикольно. На двух так и не смог себя приучить. Сейчас 1 большой, в принципе доволен, но начну однажды думать о большом 4к.
Кстати, вариант один придумался.
Если открыт айтем, а параллельно в главном окне выделить весь проект, то в буфер этого МЕ айтема попадают все айтемы из проекта и тем самом его образ проецируется на них. После чего они все открываются в таком же формате.
Думаю как привязать это дело к одной клавише, задействовать при закрытии и не снимать выделения с того который открыл изначально.

5 минут спустя))
не сработало, надо мышой или клавишами окно трогать, сдвинуть или края изменить, тогда запоминает.
 
Последнее редактирование:
Здравствуйте! Пласкажите, как эту команду можно применить ко всем семпломатикам на треке одновременно?
Script: Lokasenna_Adjust ReaSamplomatic 5000 Pitch Offset - Down 1 semitone.lua

или может какой-то другой выход из ситуации
 
Приветствую!
Разбирался тут с VST-кнопками, все хорошо, добавляются, работают. Но. Создаваемые соответствующими экшнами треки пустые, без имен. А хочется, чтобы они автоматически нужным образом именовались и далее уже попадали под Auto Color/Icon (он уже настроен). Подскажите способ решения, пж!
 
@Romires, речь идет о добавлении новых треков с определенными инструментами?
если да, то можно просто использовать Resources - Track templates
 
Столкнулся вот с чем. У меня есть три трека.
Я хочу их дублировать (без айтемов, а только с настройками входов, громкостей, панорамы, FX и тд.)
Но так, чтобы они все три дубля расположились под теми, которые я дублирую.
Стандартная команда Duplicate track не подходит - она дублирует треки с айтемами и располагает треки "каждый дубль под своим собратом" типа такого:
- Трек1
- дубль трек1
- Трек2
-дубль трек2

а мне нужно так:
- Трек1
- Трек2
- дубль трек1
-дубль трек2

Помогите с экшеном плиз (в стандартных не нашел).Спасибо

PS. Важно еще, что у меня 3 трека были сгрупированы. И нужно, чтобы их дубли были также сгрупированы, но в отдельную группу, чтобы крутилки дублей не влияли на первые треки.
Если с группировкой сложно заморачиваться, в принципе, будет здорово и без неё (сам уже отдельным экшном сгрупирую)
 
камрады! подскажите как сделать кастомный экшн. Надо одним нажатием клавиши замьютировать все FX и все sends на всех треках,при этом не выделяя все треки.
 
@kentforth,
Screenshot 2017-04-13 18.11.59.png
 
@Supa75,
Помогите с экшеном плиз (в стандартных не нашел).Спасибо
SWS/S&M: Copy selected tracks (with routing)
SWS/BR: Focus tracks
SWS/S&M: Paste tracks (with routing) or items

PS: хм, этот кастом тоже не так как нужно себя ведет при копировании нескольких треков.
Надо подумать
_______________________________________________
@Supa75, Duplicate tracks.lua - в реапаке
 
Последнее редактирование:
Навеяло работой в MS Office. А есть ли в Рипере возможность копировать настройки одного трека в другой? что-то на-подобии "вордовского" формат по образцу?
Суть в том, чтобы выделить трек донор - скопировать его все настройки без айтемов в буфер (положение ручек, эффекты и т.д.) и применить для другого трека с перезаписью его настроек.
Понимаю, что это можно сделать через темплейт, но если буду это делать так, то потом у меня образуется тонна мусора в папке темплейтов и слотах.
Рылся, но не нашел команду удалить последний созданный темплейт (как удалить последний из слота нашел, а на диске - не удаляется).
Есть какие-то мысли как это можно сделать?
 
откройте мануал и прочитайте всё про трек тэмплэйт!
ну я еще раз прочитал. Ничего нового, чтобы мне помогло решить мой вопрос не нашел. Как создать трек-темплейт, загрузить его в слот и применить темплейт из определенного слота к новому треку - я умею. Вопрос больше к тому, чтобы после применения темплейта удалить его с диска (т.е. смоделировать ситуацию копирования темплейта в буфер и его вставки в существующий трек с очищением следа данного темплейта как в слоте, т.к. и на винчестере в папке TrackTemplate)
 
Вопрос больше к тому, чтобы после применения темплейта удалить его с диска (т.е. смоделировать ситуацию копирования темплейта в буфер и его вставки в существующий трек с очищением следа данного темплейта как в слоте, т.к. и на винчестере в папке TrackTemplate)
И зачем это?
 
если я сделаю 100 таких операций, то поимею на диске 100 темплейтов, со временем их будет тысяча.

Практическое применение простое и для меня это довольно частая операция.
Когда у меня две гитары в дабл-треке, изменяя например, настройки трека для первой гитары, я хочу применять их и для трека со второй гитарой, с минимум действий. А если я реампил гитару разными пресетами и получил 20 треков, то это позволяет легко переносить настройки одного трека на любое кол-во треков

Я нашел, как это сделать (может кому пригодится)
1-й хоткей на стандартный экшн - Autosave track template (в этой операции он всегда сохраняется в последнем слоте)
2-й хоткей на созданный кастом:
SWS/S&M: Resources - Apply track template to selected tracks, last slot
SWS/S&M: Resources - Delete last track template slot/file
 
Нашёл скрипт, который удаляет ВСЕ CC со всех MIDI Item-ов.
Можно ли его модернизировать, чтобы удалял все СС кроме Pitch и Sustain в ВЫДЕЛЕННЫХ item-ах?

-- Remove all CCs from all tracks and all takes

num_items = reaper.CountMediaItems(0)
for i = 0, num_items-1 do
cur_item = reaper.GetMediaItem(0, i)
num_takes = reaper.CountTakes(cur_item)

for t = 0, num_takes-1 do
cur_take = reaper.GetTake(cur_item, t)

if(reaper.TakeIsMIDI(cur_take)) then

-- What is the fastest way of deleting all CCs?
-- Here are a few options:

--[[
_, _, ccevtcnt, _ = reaper.MIDI_CountEvts(cur_take)
for i = ccevtcnt-1, 0, -1 do
reaper.MIDI_DeleteCC(cur_take, i)
end
]]

--[[
repeat
_, _, ccevtcnt, _ = reaper.MIDI_CountEvts(cur_take)
if ccevtcnt > 0 then reaper.MIDI_DeleteCC(cur_take, ccevtcnt-1) end
until ccevtcnt == 0
]]

-- This option seems to be the fastest:
repeat
deleteOK = reaper.MIDI_DeleteCC(cur_take, 0)
until deleteOK == false

end -- if(reaper.TakeIsMIDI(cur_take))

end -- for t = 0, num_takes-1 do

end -- for i = 0, num_items-1 do
reaper.UpdateArrange()
reaper.Undo_OnStateChange("Remove all CCs from all tracks")
[DOUBLEPOST=1492159798][/DOUBLEPOST]В MIDI Editor-е применяя Legato, окончания последних нот не затрагиваются, а хотелось бы чтобы они "дотягивались" до конца item-a.
Это можно как-то реализовать?
 
В MIDI Editor-е применяя Legato, окончания последних нот не затрагиваются, а хотелось бы чтобы они "дотягивались" до конца item-a.
Это можно как-то реализовать?

добавил в реапак
Set note ends to start of next note (legato).lua
 
добавил в реапак
Set note ends to start of next note (legato).lua

я прошу прощения! видимо не верно передал свою мысль..
вот скрин после применения legato:
http://prntscr.com/ewc9jk
хотелось бы чтобы последний аккорд продлевался до конца item-a, а последний аккорд legato "не трогает"
 
ещё вопрос, можно ли сделать скрипт, с помощью которого можно резать item-ы (alt+click), будет будет выделяться правая часть отрезанная и НЕ БУДЕТ перескакивать в место среза курсор?
есть стандартная функция item: split items at edit cursor (select right), но после разрезания курсор убегает в точку среза ((
 
можно ли сделать скрипт, с помощью которого можно резать item-ы (alt+click), будет будет выделяться правая часть отрезанная и НЕ БУДЕТ перескакивать в место среза курсор?

пока насколько знаю нельзя, так же как и для любых сочетаний ЛКМ по айтему.



Можно ли его модернизировать, чтобы удалял все СС кроме Pitch и Sustain
Для питча вроде нашел как сделать. А для Sustain есть ли какое-то другое название в выпадающем списке (см скрин)?
upload_2017-4-14_16-39-40.png
 
@vax,
Код:
local r = reaper; local function nothing() end; local function bla() r.defer(nothing) end


local items = r.CountSelectedMediaItems()

r.Undo_BeginBlock() r.PreventUIRefresh(1)

for i = 0, items-1 do
  local item = r.GetSelectedMediaItem(0, i)
  local takes = r.CountTakes(item)

  for t = 0, takes-1 do
    local take = r.GetTake(item, t)
 
    if r.TakeIsMIDI(take) then
 
      local _,_,ccevtcnt = r.MIDI_CountEvts(take)

      for i = ccevtcnt-1, 0, -1 do
        _, selectedOut, mutedOut, ppqposOut, chanmsg, chanOut, msg2Out, msg3Out = r.MIDI_GetCC(take, i)
        if chanmsg ~= 224 then
       
          r.MIDI_DeleteCC(take, i)
        end
      end
 
    end

  end
  r.UpdateItemInProject(item)

end

r.PreventUIRefresh(-1) r.Undo_EndBlock('Remove all CCs but Pitch from sel items', -1)
Если это то, что надо - для Sustain см. вопрос выше
 
@vax,

Код:
local r = reaper; local function nothing() end; local function bla() r.defer(nothing) end

local items = r.CountSelectedMediaItems()

r.Undo_BeginBlock() r.PreventUIRefresh(1)

for i = 0, items-1 do
  local item = r.GetSelectedMediaItem(0, i)
  local takes = r.CountTakes(item)

  for t = 0, takes-1 do
    local take = r.GetTake(item, t)

    if r.TakeIsMIDI(take) then

      local _,_,ccevtcnt = r.MIDI_CountEvts(take)

      for i = ccevtcnt-1, 0, -1 do
        _, selectedOut, mutedOut, ppqposOut, chanmsg, chan, msg2, msg3 = r.MIDI_GetCC(take, i)
        if chanmsg ~= 224 and msg2 ~= 64 then

          r.MIDI_DeleteCC(take, i)
        end
      end

    end

  end
  r.UpdateItemInProject(item)

end

r.PreventUIRefresh(-1) r.Undo_EndBlock('Remove all CCs but Pitch and Sustain from sel items', -1)
 
  • Like
Реакции: vax
работает! благодарю!
коллега, а как добавить в этот скрипт нужный контроллер?
допустим я хочу сделать так чтобы скрипт ещё и ModWheel не трогал (CC# 1).
попробовал вписать "and msg2 ~= 1" а он оставил 41 и 42 контроллер ))
 
@vax
Код:
local r = reaper; local function nothing() end; local function bla() r.defer(nothing) end

local items = r.CountSelectedMediaItems()

r.Undo_BeginBlock() r.PreventUIRefresh(1)

for i = 0, items-1 do
  local item = r.GetSelectedMediaItem(0, i)
  local takes = r.CountTakes(item)

  for t = 0, takes-1 do
    local take = r.GetTake(item, t)

    if r.TakeIsMIDI(take) then

      local _,_,ccevtcnt = r.MIDI_CountEvts(take)

      for i = ccevtcnt-1, 0, -1 do
        _, selectedOut, mutedOut, ppqposOut, chanmsg, chan, msg2, msg3 = r.MIDI_GetCC(take, i)
        if chanmsg ~= 224 and msg2 ~= 64 and msg2 ~= 1 then

          r.MIDI_DeleteCC(take, i)
        end
      end

    end

  end
  r.UpdateItemInProject(item)

end

r.PreventUIRefresh(-1) r.Undo_EndBlock('Remove all CCs but Pitch, Sustain and ModWheel from sel items', -1)
[\CODE]
 
  • Like
Реакции: vax

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