Render, Bounce in place, Mixdown selection и тому подобное

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.158
113
Долгое время тыкал разные экшны и создавал всякие доп меню для конкретного рендера. Поэтому пришлось все это как-то унифицировать. Создал такие специфичные скрипты (по мере своих способностей на данный момент кодить):) Пока без GUI. Может быть кому нибудь пригодится в качестве замены Bounce in place в кубе, ну и Mixdown selection в Studio one. Внес в эти фичи несколько собственный концепт. Самое главное для меня в скриптах - выбор хвоста и mono/stereo/multichanel.

Итак, четыре основных скрипта. Пока полностью ориентированы на использование в аудио или миди (инструмент) треке. Если рендерить просто шину (звучащий трек без айтемов), то либо ставить тайм селекшн + хвост, либо тайм селекшн, либо ничего не менять. То есть один хвост больше 0 ставить нельзя. Потом доделаю этот момент.

Render to new track - рендерит весь трек или по тайм селекту. С группой треков тоже сработает, аналогично штатному рендеру расположит стемы над каждым треком.

Bounce selection - очень похожий скрипт, но идентификация идет по выделенным айтемам. По сути более продвинутый скрипт. При этом если вы из 3х айтемов друг за другом выделите 1ый и 3ий - то второй не будет рендерится между ними. Также может учитываться тайм селект. Для группы треков правда будет один и тот же хвост по самому дальнестоящему айтему (если не учитывается тайм селект). Доделаю этот момент.

Mixdown selection - полностью повторяет фичу S1, но также добавил окно для выбора хвоста, учитывать/не учитывать тайм селект, и моно/стерео. Суть фичи в том, что все выделенные айтемы будут рендерится в один трек, перед мастером. При этом не будут учитываться промежуточные айтемы, если они не выделены (аналогично Bounce selection). Принцип работы через Global folder :) Поэтому не получится сделать multichannel, т.к. папка в рипере не принимает сигнал мультиканально.

Render to new take - рендер в тейк. Подходит для инструмента.

Тему создал, т.к. возможно потом буду эту идею модифицировать. Это касается особенно GUI. Рад буду, если кто-то идею подхватит или уже подхватил и создаст более совершенные скрипты :)

По инструкции мне кажется все будет и так понятно :) Вводить нужное число (если tail в секундах, то можно дробное), либо 1 и 0 в качестве "да" и "нет". В качестве "да" вроде можно что угодно больше 0 вводить :)
 

Вложения

Последнее редактирование:
Обновил по части того, чтобы все было правильно после cancel render :)
 
Последнее редактирование:
Еще раз обновил - теперь есть опция копировать автоматизации эффектов (в случае, если мы рендерим без эффектов и копируем их).
 
Вновь обновил - более изящно обошел один баг, который возникает с копированием эффектов вместе с FX автоматизациями (баг с чанками) в пустой Fx chain. Заключается он в том, что когда копируются эффекты в пустой FX chain (на котором ранее не было эффектов) - после копирования эффектов удаляются все айтемы на треке. Ранее скрипт для обхода бага добавлял и удалял ReaEq.
Также была ошибка в скрипте Bounce selection с копированием без автоматизаций - два раза копировалось. Опечатался - поправил
 
Последнее редактирование:
  • Like
Реакции: lamamama и Gavruseff
Bounce selection перезалил снова, поправлял его и еще ошибку нашел :)
Также в Render и Bounce поправил удаление точек вне time selection, когда если кривая envelope была написана вогнуто/выпукло, и поверх этой вогнутости/выпуклости была точка, попадающая на левую границу time selection - после удаления точек кривая в этом месте становилась ровной.
 
Последнее редактирование:
  • Like
Реакции: Maestro Sound
@Андрей Макаров, можно, но меня настораживает эта библиотека :) Relauncher например написан на ней, и он очень некрасво запускается (мелькает все до него). Хотя может в другом дело
Возможно буду свое рисовать.
А можешь скинуть этот шаблон? Я посмотрю как работает
 
  • Like
Реакции: Maestro Sound
@Андрей Макаров, нормально запускается :) Значит ReaLauncher так запускается видимо из-за каких-то процессов, которые он зрит перед этим, то есть в reaper.ini
 
Еще раз обновил - по просьбе добавил опцию Pre-render length и trim начала айтема (имеет смысл только при наличии тайм селекта, иначе тишина)
 
Последнее редактирование:
@borisuperful, А как на счет отрендеренного трека его, Замутировать, залочить,, перевести его в какую нибудь из 32 групп выделенную для отрендеренных и скрыть их визуально??????
 
@Maestro Sound, очень громоздко будет. Что нибудь может еще добавлю. Это все можно сделать. Типа добавить пункт - запаковать и скрыть в группу и номер.
 
  • Like
Реакции: Maestro Sound
На след неделе добавлю пока просто дополнительно к mute - disable или delete оригинала
 
Обновил - добавил скрипт рендер в тейк. Используется штатный экшн Item: Apply track/take FX to items c вариациями каналов, но скрипт в отличие от экшна не рендрит эффекты трека, а временно уводит в bypass (кроме инструмента). Аналогично предыдущим скриптам - правильно восстанавливает bypass состояние эффектов (например если до этого инструмент уже находился в bypass). Также есть опция увести инструмент в оффлайн
Фишка подходит исключительно для инструмента
 
Последнее редактирование:
Вновь обновил - как и обещал, добавил опцию Disable и Delete оригинала. Также добавил скрипты, чтобы вернуть или задать disable состояние трека
 
Последнее редактирование:
@borisuperful, классно сделал! Уже в работе! :) А есть возможность воплотить запоминание последних выбранных опций по умолчанию например в Script: Yanick_Bounce selection.lua и Script: Yanick_Render to new take.lua?
Очень бы помогло при работе с items вокала, которые в моно записаны. Каждый раз не выставлять выставленный по умолчанию Stereo-2 или Mute... И Mute не трека, а Item, который рендеришь? Типа - Script: gen_Render selected item as new take, up to last VSTi.lua? Было бы вообще супер!!! ✌️:)
 
Последнее редактирование:
  • Like
Реакции: kapetz
@YuriOl, запоминание опций не в курсе как делать :) Можешь себе сам составить набор. Я обновил, там в верху скрипта можно менять. Также версии без окна сделал.
И Mute не трека, а Item, который рендеришь?
Можно сделать, в Bounce, подумаю потом
 
  • Like
Реакции: YuriOl
Yanick_Bounce selection (windowless) как-то чуть по другому работает? В Yanick_Bounce selection достаточно выделенного айтема (не трека) и скрипт рендерит этот кусок (по его границы), а в Yanick_Bounce selection (windowless) надо обязательно трек выделять и time_selection иначе рендерит и пустоту до айтема.

можешь посмотреть мут айтема
Отлично!
 
@YuriOl, да, я там не тот код скопировал из рендер трека :) Посмотри ща еще раз
Я так и подумал. Поведение скрипта стало как Script: Yanick_Render track to new track... :)
[DOUBLEPOST=1547629413][/DOUBLEPOST]@borisuperful, конечно не принципиально, наверное дело привычки, а не трудно сделать чтобы рендеренный трек (Item) создавался под а не над айтемом, который рендеришь?
 
конечно не принципиально, наверное дело привычки, а не трудно сделать чтобы рендеренный трек (Item) создавался под а не над айтемом, который рендеришь?
Геморройно :) Это лишний код для перемещения еще. Нативно так работает
 
@YuriOl, хотя на самом деле можно сделать, но если ты типа будешь рендерить несколько треков, то они переместятся не один по другим, а встанут как бы кучей под последним. Точно также как duplicate tracks в Studio One работает.
ReorderSelectedTracks работает для выделенных треков, как бы задает куче треков одно место для перемещения. И чтобы заставить его работать для каждого индивидуально, получается надо лепить код, в котором у нас будет цикл - выделить каждый трек из выделенных и переместить, что само по себе не очень быстро может быть, т.к. перемещение происходит не одновременно.
 
Последнее редактирование:
@borisuperful,
PHP:
local function ArcMoveTrackUpDown(track,number);
    reaper.PreventUIRefresh(54684879);
    local sel_tracks = {};
    for i = reaper.CountSelectedTracks(0)-1,0,-1 do;
        local Seltrack = reaper.GetSelectedTrack(0,i);
        sel_tracks[i] = reaper.GetTrackGUID(Seltrack);
        reaper.SetMediaTrackInfo_Value(Seltrack,"I_SELECTED",0);
    end;
    local numb = reaper.GetMediaTrackInfo_Value(track,"IP_TRACKNUMBER");
    reaper.SetMediaTrackInfo_Value(track,"I_SELECTED",1);
    if number < 0 then numb = numb-1 end ;
    if numb+number <= reaper.CountTracks(0)and number > 0 or
       numb+number >= 0 and number < 0 then; 
       reaper.ReorderSelectedTracks(numb+number,0);
    end;
    reaper.SetMediaTrackInfo_Value(track,"I_SELECTED",0);
    for i = #sel_tracks,0,-1 do;
        local TrackByGUID = reaper.BR_GetMediaTrackByGUID(0,sel_tracks[i]);
        if TrackByGUID then;
            reaper.SetTrackSelected(TrackByGUID,1);
        end;
    end;
    reaper.PreventUIRefresh(-54684879);
end;



local track = reaper.GetTrack( 0, i );

--ArcMoveTrackUpDown(track, -1) -- в верх на один
--ArcMoveTrackUpDown(track, -5) -- в верх на пять
--ArcMoveTrackUpDown(track,  1) -- в низ на один
--ArcMoveTrackUpDown(track, 5) -- в низ на пять
 
  • Like
Реакции: borisuperful
хотя на самом деле можно сделать, но если ты типа будешь рендерить несколько треков,
Да и так нормально. Меня не рендер треков именно интересовал, а рендер айтемов. Наверно очень привык к скрипту - gen_Render selected item as new take, up to last VSTi.lua :)
 
@YuriOl, так там мой вариант есть с рендер тейком :)
Посмотрел от Евгения, нашел отличия такие:
1) Вроде не умеет рендерить тейки с разных треков разом
2) Не имеет выбора моно/стерео/мутильканал
3) Ну и не уводит инструмент в оффлайн + сам инструмент идентифицируется по названию VSTi (видать в 2016 году не было еще API). Как только ты уберешь приставку, то есть переименуешь инструмент и уберешь VSTi или AUi - все будет неправильно работать
В моем же скрипте не будет разницы :)
 
Последнее редактирование:
  • Like
Реакции: YuriOl

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