ReaScripts (скрипты для Reaper) - делимся (1 онлайн

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
Немного поправил первый пост. Если кому есть что дополнить (ссылки и прочие интересности) - дополню.
 
25 Июл 2017
36
13
8
36
Здравствуйте, друзья! Существует ли скрипт для синхронизации трэков решающий проблемы с несинхронными Word Clock-ами? К примеру есть два одинаковых , но разных по качеству трека записанных одновременно на концерте разными устройствами (Скажем, один из них - это multi-miked multitrack, а другой сумма). У них разный Word Clock и по времени они плывут? Вопрос, есть ли скрипт, который может их синхронизировать. (То есть не менять длину нот stretch marker-ами) а просто в нужных местах, скажем каждые 20 секунд split items и подвигать айтем синхронизируя его с исходником.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.493
10.547
113
57
Киев
forum.videoediting.ru
@Дима Горелик, такой задачи не существует. Записанные треки синхронизировать как то иначе, чем кинуть на разные дорожки в Reaper - не нужно!
Если они, как вы написали выше, «плывут», то это скорее всего проблема музыкантов (не ритмично игравших), либо (если это была одновременная запись) - какие то сумасшедшие проблемы дивайсов или кривых рук тех, кто писал.
Встречал таких ламеров, которые ухитрялись писать с устройства синхорнизированного в 48 kHz в DAW с частотой 44,1 kHz. Такую хрень нужно разбирать отдельно, возвращая в нормальную частоту исходники перед их использованием.
 

maxsizeprod

New Member
21 Май 2018
1
0
1
26
Скрипт проверяет есть ли time selection, если есть - убирает его, если нет - закрывает плавающие окна.
Зависит от SWS Extension (если sws не установлен - закрывать окна не будет).

Юзкейс: вешаешь скрипт на "esc", и в midi редакторе по первому нажатию esc убирает time selection если он есть, если нет - закрывает midi редактор.
Зачем: по умолчанию в контексте окна аранжировки по esc убирается time selection, а в контексте midi редактора - закрывается midi редактор. Мне это доставляло боль. Поведение, реализованное в скрипте, мне кажется более логичным.
script_show.gif
 

Вложения

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

EUGEN27771

Well-Known Member
23 Апр 2010
2.289
1.969
113
@Alexmolecul, порог ниже попробуйте. Вообще, это скрипт очень старый, множество недостатков.
Этот лучше - https://raw.githubusercontent.com/EUGEN27771/ReaScripts/master/Various/gen_Envelope-based Deesser.eel
Тоже строит огибающую, только иначе - работает как многие плагины(подобный алгоритм), плюс намного, в разы быстрее.
---------------------------------------
По поводу картинки. В первом скрипте есть картинка, во втором нет.
Первый скрипт на Lua, там проще - картинку какую-никакую нарисовал, но сам алгоритм корявый.
Второй скрипт на EEL, на момент написания сделать картинку мне было действительно трудно, но там алгоритм нормальный. Картинку на данный момент сделать не так сложно. Если все же сделаю - она может пойти сразу на диэссер, компрессор, гейт, транзиент-детектор и триггер. Поэтому, смысл вроде бы есть.
 
Последнее редактирование:

Alexmolecul

Active Member
19 Апр 2010
299
94
28
Moscow
@EUGEN27771, ситуация такая, я "подравниваю" огибающую громкости с помощью скрипта gen_Envelope-based Compressor.eel, а потом хотел бы еще и "с" ки убавить скриптом gen_Envelope-based Deesser.eel, но разумеется огибающая каждый раз создается заново, обнуляя предыдущую, можно как то совместить эти скрипты или сделать, чтобы они друг друга не отменяли?
 

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
Простенький скрипт, чтобы увеличивать/уменьшать отображение пиков без необходимости нажимать на shift+стрелки, достаточно в нужную сторону покрутить колесо
Код:
local _,_,_,_,_,_,val = reaper.get_action_context() 

function Peaks()
if val > 0 then
reaper.Main_OnCommand(40155, 0)
end
if val < 0 then
reaper.Main_OnCommand(40156, 0)
end
end

reaper.defer(Peaks)
 
  • Like
Реакции: BAYANBAYAN

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
можно как то совместить эти скрипты или сделать, чтобы они друг друга не отменяли?
В идеале надо просто эту функцию интегрировать, чтобы кривая формировалась как и в зависимости от настроек компрессора, так и в зависимости от настроек де-эссера, одновременно и вместе
 
  • Like
Реакции: Alexmolecul

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Nagor, это для айтемов работает. Да как угодно, хоть для всех. Но если айтемов много, то может начать тупить при детектировании транзиентов
 
  • Like
Реакции: Nagor

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
Скрипт чтобы удалять нечетные стретч-маркеры. Чтобы были четные, в DeleteTakeStretchMarkers где i-1, поставить i+1
Код:
script_title = "Remove every odd stretch marker"
reaper.Undo_BeginBlock()
reaper.PreventUIRefresh(1)

function main()
count_items = reaper.CountSelectedMediaItems()
for i = 0, count_items-1 do
  selitem = reaper.GetSelectedMediaItem(0,i)
  if selitem == nil then return end
  take = reaper.GetActiveTake(selitem)
  num = reaper.GetTakeNumStretchMarkers(take)
  for i = 0, num-1 do
   retval, pos, srcpos = reaper.GetTakeStretchMarker( take, 0 )
   reaper.DeleteTakeStretchMarkers( take, i-1,1 )
  end
end
end

main()

reaper.UpdateArrange()
reaper.PreventUIRefresh(-1)
reaper.Undo_EndBlock(script_title,-1)
 

BAYANBAYAN

Active Member
4 Мар 2010
268
91
28
Простенький скрипт, чтобы увеличивать/уменьшать отображение пиков без необходимости нажимать на shift+стрелки, достаточно в нужную сторону покрутить колесо
[/code]
Подскажите, я правильно понял, что это надо назначать на колесо мыши в модификаторах? А в каком разделе модификатора?
 

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@BAYANBAYAN, нет, action list. При вписывавнии шотрката нужно задать любое сочетание shift alt ctrl win, и крутануть колесо
 
  • Like
Реакции: BAYANBAYAN

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Nagor, а. я ж про другое подумал :)) Если про peak view, да, на всех конечно. Это штатная фишка, которую интегрировал в колесо
 
Последнее редактирование:
  • Like
Реакции: Nagor
Друзья, а есть ли такой скрипт? У меня тут задача встала по равномерной расстановке айтемов внутри определенного временного отрезка. Может кто такой видел? Но тут надо не по сетке, а именно чтобы просто между всеми айтемами на дорожке было равное пустое расстояние.
 

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
Удаление контента с выделенного трека без перемещения правой части контента. То есть айтемы и енвелопы. Позже посмотрю вариант для айтемов автоматизации. На первый взгляд не хватает API
Код:
reaper.Undo_BeginBlock(1)
reaper.PreventUIRefresh(1)


local count_tracks = reaper.CountSelectedTracks(0)
local time_selection_start, time_selection_end = reaper.GetSet_LoopTimeRange( 0, 1, 0, 0, 0)
if time_selection_start == time_selection_end then return end


if count_tracks == 0 then return end


for i=0, count_tracks-1 do
  local get_track = reaper.GetSelectedTrack(0,i)
  local count_envelopes = reaper.CountTrackEnvelopes(get_track)
  for j=0, count_envelopes-1 do
    local get_envelope = reaper.GetTrackEnvelope(get_track, j)
    local count_points = reaper.CountEnvelopePoints(get_envelope)
    local _, point_value_start, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_start, 0, 0)
    local _, point_value_end, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_end, 0, 0)
    if count_points ~= 0 then
      for h=0, count_points-1 do
        reaper.DeleteEnvelopePointRange(get_envelope, time_selection_start, time_selection_end+0.00000000000001)
      end
    end
    reaper.InsertEnvelopePoint(get_envelope, time_selection_start, point_value_start, 0, 0, 0, 0)
    reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_start, 0, 0, 0, 0)
    reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_end, 0, 0, 0, 0)
  end
 local count_items = reaper.CountTrackMediaItems(get_track)
 for t=count_items, 0, -1 do
  local get_item = reaper.GetTrackMediaItem(get_track, t)
  if get_item then
    reaper.SplitMediaItem( get_item, time_selection_end)
    reaper.SplitMediaItem( get_item, time_selection_start)
  end
 end   
   local count_items_two = reaper.CountTrackMediaItems(get_track)
    for z=count_items_two, 0, -1 do
      local get_item_selection = reaper.GetTrackMediaItem(get_track, z)
      if get_item_selection then
        local info_start = reaper.GetMediaItemInfo_Value(get_item_selection,'D_POSITION')
        if info_start >= time_selection_start and info_start <= time_selection_end-0.00000000000001 then
          reaper.DeleteTrackMediaItem(get_track, get_item_selection)
        end
      end
    end
end

   
     
reaper.Undo_EndBlock("Remove contents from selected items", -1)
reaper.UpdateArrange()
reaper.PreventUIRefresh(-1)
То же самое для всех треков

Код:
reaper.Undo_BeginBlock(1)
reaper.PreventUIRefresh(1)


local count_tracks = reaper.CountTracks(0)
local time_selection_start, time_selection_end = reaper.GetSet_LoopTimeRange( 0, 1, 0, 0, 0)
if time_selection_start == time_selection_end then return end


if count_tracks == 0 then return end


for i=0, count_tracks-1 do
  local get_track = reaper.GetTrack(0,i)
  local count_envelopes = reaper.CountTrackEnvelopes(get_track)
  for j=0, count_envelopes-1 do
    local get_envelope = reaper.GetTrackEnvelope(get_track, j)
    local count_points = reaper.CountEnvelopePoints(get_envelope)
    local _, point_value_start, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_start, 0, 0)
    local _, point_value_end, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_end, 0, 0)
    if count_points ~= 0 then
      for h=0, count_points-1 do
        reaper.DeleteEnvelopePointRange(get_envelope, time_selection_start, time_selection_end+0.00000000000001)
      end
    end
    reaper.InsertEnvelopePoint(get_envelope, time_selection_start, point_value_start, 0, 0, 0, 0)
    reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_start, 0, 0, 0, 0)
    reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_end, 0, 0, 0, 0)
  end
 local count_items = reaper.CountTrackMediaItems(get_track)
 for t=count_items, 0, -1 do
  local get_item = reaper.GetTrackMediaItem(get_track, t)
  if get_item then
    reaper.SplitMediaItem( get_item, time_selection_end)
    reaper.SplitMediaItem( get_item, time_selection_start)
  end
 end   
   local count_items_two = reaper.CountTrackMediaItems(get_track)
    for z=count_items_two, 0, -1 do
      local get_item_selection = reaper.GetTrackMediaItem(get_track, z)
      if get_item_selection then
        local info_start = reaper.GetMediaItemInfo_Value(get_item_selection,'D_POSITION')
        if info_start >= time_selection_start and info_start <= time_selection_end-0.00000000000001 then
          reaper.DeleteTrackMediaItem(get_track, get_item_selection)
        end
      end
    end
end

   
     
reaper.Undo_EndBlock("Remove contents from selected items", -1)
reaper.UpdateArrange()
reaper.PreventUIRefresh(-1)
 
Последнее редактирование:
  • Like
Реакции: Maestro Sound

Maestro Sound

Active Member
1 Ноя 2007
616
70
28
@borisuperful, для одиночных итемов (внезависимости от выделенного трека, работать по выделенному итему) для Mouse Modifiers Удобней на не выделенном треке а под курсором мышки
 
Последнее редактирование:
Еще возник вопрос: допустим есть у меня какой-то айтем (ну или группа айтемов) и мне нужно, чтобы этот айтем после копирования сразу вставился в одно из мест, где у меня стоит маркер. Такое возможно?
 

Supa75

Active Member
21 Мар 2017
590
143
43
43
Днепр, Украина
Еще возник вопрос: допустим есть у меня какой-то айтем (ну или группа айтемов) и мне нужно, чтобы этот айтем после копирования сразу вставился в одно из мест, где у меня стоит маркер. Такое возможно?
Вы имеете в виду наверное "эдит-курсор", а не "маркер"?
если так, то сделайте простой кастом экшн и повесьте его на хоткей

- Edit: Copy items
- Item: Paste items/tracks

Если таки "маркер", то Вам нужно знать его номер и вставить соотв. экшн между "копи" и "пэйст"
Screenshot_1.png
 
Вы имеете в виду наверное "эдит-курсор", а не "маркер"?
если так, то сделайте простой кастом экшн и повесьте его на хоткей

- Edit: Copy items
- Item: Paste items/tracks

Если таки "маркер", то Вам нужно знать его номер и вставить соотв. экшн между "копи" и "пэйст"
Посмотреть вложение 154679
\

Имел в виду именно маркер. Спасибо. Попробую.
 

maksukay

New Member
31 Дек 2018
1
0
1
19
Имеется ли у скрипта возможность определить громкость в какой-либо момент? Если да, то как?
 

MusPro

Active Member
20 Май 2007
518
127
43
Москва
Давно хочется одну такую фишку, но пока не придумал как и не нашел.
Некое подобие Propagate для трека или эффекта. В идеале клонировать эффект и накручивая что-то на одном, автоматически дублировать на его теневые копии(ю).
Нет ли ничего этакого?
 

zenykmusic

Member
16 Авг 2018
122
2
18
39
Подскажите пожалуйста.Я где-то давно здесь видел энвелоп компресор который работает на базе envelope volume Reaper.Подскажите где его найти.Спасибо
 

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