ReaScripts (скрипты для Reaper) - обсуждение

  • Автор темы Автор темы drzhnn
  • Дата начала Дата начала
Если я правильно понял, нужно видеть отображение волны айтема автоматизации?

Рипер отображает волну, через свой Media Explorer. Где отображается волна аудио файла, там же, и волну автоматизации показывает.
Очень удобно смотреть пресеты.
Это как это? Можно скриншот пожалуйста?
 
Это как это? Можно скриншот пожалуйста?
Вот.

192872

И вот.
192873
 
  • Like
Реакции: vax, sd и Andernik
Всем привет! Возникла идея —

Во время создания аранжа или сведения возникает необходимость в gain staging. Внутренний перфекционист сильно не любит выкручивать фейдеры громкости TCP\MCP. Дабы обойти сие действие — кидаю Volume Adjustment на дорожку через хоткей. После этого могу влиять на балансы и громкости минуя\оставляя это под автоматизацию. Так сложилось. НО!

Придумал такую схему

1. Кидаю звук на дорожку — естественно он громкий
192896
2. Начинаю двигать фейдер до приемлемого уровня
192897
3. Выделяю дорожку — нажимаю на хоткей (скрипт) и магическим образом громкость её в TCP возвращается в 0, подгружается наш Volume Adjustment в значении -12. ИЛИ! Если он уже был — обновляет данные в зависимости от прошлой громкости (было +6 минусуем 12 получаем -6)
192898

Плагины вроде GainMatch, AB_LM, какие то решения на базе JS, не прижились. А ещё, они вроде как не работают адекватно на миди дорожках с сэмплерами, синтезаторами. Ну и ресурс. Да и не их это функция. На мастер можно, но это уже оффтоп.

А вот мой реальный сценарий:

Я делаю аранжировку или микс, играю балансы, экспериментирую, кручу фейдеры. В определенный момент — начинаю выстраивать с фундамента, и иду своей цепочкой. Крутанул, отстроил — нажал хоткей. Дорожка в ноль, глазу приятно от своеобразной метки. Чуть убрал громкость на шине, нажал хоткей, ноль. Зато потом +- 2 децибела и микс по сути готов.

Ищу единомышленников. Может есть тут кто, кто разделяет мои подход? Или есть гораздо простые и очевидные способы и их решения?

Спасибо за внимание
 
  • Like
Реакции: riko
@ma3lstorm,

PHP:
    local FXNAME = 'utility/volume_pan_sample_accurate_auto';
    local PARAM = 0;
   
   
    -----------------------------------------------------
    local CountSelTrack = reaper.CountSelectedTracks(0);
    if CountSelTrack > 0 then;
        ----
        reaper.PreventUIRefresh(1);
        reaper.Undo_BeginBlock();
        ----
        for i = 1,CountSelTrack do;
            local SelTrack = reaper.GetSelectedTrack(0,i-1);
            local FX = reaper.TrackFX_AddByName(SelTrack,FXNAME,false,1);
            if FX > -1 then;
                local vol = reaper.GetMediaTrackInfo_Value(SelTrack,'D_VOL');
                local DB = 20*math.log(vol,10);
                local retval,minval,maxval = reaper.TrackFX_GetParam(SelTrack,FX,PARAM);
                local newVal = retval+DB;
                reaper.TrackFX_SetParam(SelTrack,FX,PARAM,newVal);
                reaper.SetMediaTrackInfo_Value(SelTrack,'D_VOL',1);
            end;
        end;
        ----
        reaper.Undo_EndBlock("Set vol",-1);
        reaper.PreventUIRefresh(-1);
        ----
    else;
        reaper.defer(function()end);
    end;
 
Последнее редактирование:
В случае повторного изменения громкости фейдера загружается новая инстанция плагина. Можно ли сделать, чтобы данные обновлялись в предыдущем? Спасибо
В смысле ? Код так и написан что если плагин уже существует, то обновить данные в нем и второй он не добавляет.
У тебя не так разве?

111.gif
 
Последнее редактирование:
  • Like
Реакции: ma3lstorm
@ma3lstorm,
Не знаю почему у тебя так, этого не должно происходить.
Такое ощущение что у тебя плагин добавляется и переименовывается.
Попробуй имя переписать.

111.gif
 
  • Like
  • Love
Реакции: riko и ma3lstorm
@Archie's

Спасибо большое! Это облегчит мне жизнь! Заработало после удаления "utility/" в названии FX name.

Вопрос на засыпку — можно ли сменить имя инстанции для эстетики? Я попробовал сменить названия js через блокнот на Gain Stage. Потом взял это название и скопировал в FX name. Не работает
 
В смысле ? Код так и написан что если плагин уже существует, то обновить данные в нем и второй он не добавляет.
У тебя не так разве?

А как сделать чтобы окно c плагином не открывалось постоянно, а работало в фоне?
 
А как сделать чтобы окно c плагином не открывалось постоянно, а работало в фоне?
JavaScript:
    local FXNAME = 'utility/volume_pan_sample_accurate_auto';
    local PARAM = 0;
   
    
    
    
    
    --[-------------------------------------------------------------
    local fxfloat = reaper.SNM_GetIntConfigVar('fxfloat_focus',0);
    if fxfloat&4 == 4 then;
        local fxfloat2 = fxfloat&~(fxfloat&4);
        reaper.SNM_SetIntConfigVar('fxfloat_focus',fxfloat2);
        reaper.defer(function()reaper.SNM_SetIntConfigVar('fxfloat_focus',fxfloat)end);     
    end;
    --]]-------------------------------------------------------------
    local CountSelTrack = reaper.CountSelectedTracks(0);
    if CountSelTrack > 0 then;
        ----
        reaper.PreventUIRefresh(1);
        reaper.Undo_BeginBlock();
        ----
        for i = 1,CountSelTrack do;
            local SelTrack = reaper.GetSelectedTrack(0,i-1);
            local vol = reaper.GetMediaTrackInfo_Value(SelTrack,'D_VOL');
            if vol ~= 1 then
                local FX = reaper.TrackFX_AddByName(SelTrack,FXNAME,false,1);
                if FX > -1 then;
                    local DB = 20*math.log(vol,10);
                    local retval,minval,maxval = reaper.TrackFX_GetParam(SelTrack,FX,PARAM);
                    local newVal = retval+DB;
                    reaper.TrackFX_SetParam(SelTrack,FX,PARAM,newVal);
                    reaper.SetMediaTrackInfo_Value(SelTrack,'D_VOL',1);
                    
                    ---
                    newVal = tonumber(string.format("%.1f",newVal))
                    xpos,ypos = reaper.GetMousePosition()
                    reaper.TrackCtl_SetToolTip('Volume\n'..newVal,xpos+10,ypos-25,false)
                    ---
                    
                end;
            end;
        end;
        ----
        reaper.Undo_EndBlock("Set vol",-1);
        reaper.PreventUIRefresh(-1);
        ----
    else;
        reaper.defer(function()end);
    end;
 
  • Like
Реакции: Lucik530 и Darek
JavaScript:
    local FXNAME = 'utility/volume_pan_sample_accurate_auto';
    local PARAM = 0;
   
    
    
    
    
    --[-------------------------------------------------------------
    local fxfloat = reaper.SNM_GetIntConfigVar('fxfloat_focus',0);
    if fxfloat&4 == 4 then;
        local fxfloat2 = fxfloat&~(fxfloat&4);
        reaper.SNM_SetIntConfigVar('fxfloat_focus',fxfloat2);
        reaper.defer(function()reaper.SNM_SetIntConfigVar('fxfloat_focus',fxfloat)end);     
    end;
    --]]-------------------------------------------------------------
    local CountSelTrack = reaper.CountSelectedTracks(0);
    if CountSelTrack > 0 then;
        ----
        reaper.PreventUIRefresh(1);
        reaper.Undo_BeginBlock();
        ----
        for i = 1,CountSelTrack do;
            local SelTrack = reaper.GetSelectedTrack(0,i-1);
            local vol = reaper.GetMediaTrackInfo_Value(SelTrack,'D_VOL');
            if vol ~= 1 then
                local FX = reaper.TrackFX_AddByName(SelTrack,FXNAME,false,1);
                if FX > -1 then;
                    local DB = 20*math.log(vol,10);
                    local retval,minval,maxval = reaper.TrackFX_GetParam(SelTrack,FX,PARAM);
                    local newVal = retval+DB;
                    reaper.TrackFX_SetParam(SelTrack,FX,PARAM,newVal);
                    reaper.SetMediaTrackInfo_Value(SelTrack,'D_VOL',1);
                    
                    ---
                    newVal = tonumber(string.format("%.1f",newVal))
                    xpos,ypos = reaper.GetMousePosition()
                    reaper.TrackCtl_SetToolTip('Volume\n'..newVal,xpos+10,ypos-25,false)
                    ---
                    
                end;
            end;
        end;
        ----
        reaper.Undo_EndBlock("Set vol",-1);
        reaper.PreventUIRefresh(-1);
        ----
    else;
        reaper.defer(function()end);
    end;
Спасибо)
 
  • Like
Реакции: Archie's
Мужики, а был ли такой скрипт ?
Мутирование трека между активных айтемов?
Выделил все айтемы на треке, нажал кнёпочку и все замутировалось ,как на гифке...
Вроде что-то мелькало, но мне показалось ненужным,, В Экщон в поисковике все варианты перепробовал....
 

Вложения

  • REAPER MUTE.gif
    REAPER MUTE.gif
    8,6 MB · Просмотры: 291

Ну вот, «ядро» добил, и даже кое-какой обвес)
Правда, пока понятия не имею, сколько там багов, вон, на записи парочку пришлось быстренько пофиксить. Но по крайней мере, уже можно пытаться делать что-то полезное)

Но это даже пока не альфа, тут ни доков, ни установки, ничего) Боюсь, добивать буду уже неспешно, сейчас мне и этого хватит.

Вообще праздники прошли «плодотворно»))
18577428_457242580.jpg
 
Доброго дня всем. Нашёл интересный скрипт для себя. Script: ausbaxter_Render item columns.lua. Не знаю, почему я его раньше не видел. Работает как раз как мне надо, могу сэкономить кучу времени и движений. Но странно ведёт себя в мультитрековых темплейтах. В случаях установки рендера через родительский трек папку на выходе получаю ноль. Установить рендер через аудио трек - нет возможности, пробовал в этом случае создать шину - не работает. Только в случае, если внутри уже готовой папки подчинить миди трек его аудио треку и установить выходом этот аудио трек как папку - получается всё как надо, но при этом нет смысла пользоваться этим скриптом. Тем более, если в темплейте на один миди трек может оказаться несколько аудио треков. Собственно, мультик прилагаю.
Render item columns.gif

Последнее появление автора скрипта на форуме Кокоса датировано 2019ым годом. Предчувствую, что писать ему бесполезно. Никаких тем по этому скрипту тоже там не нашёл.
Мне кажется, что в коде можно кое-что исправить, но что, пока не могу понять. Ведь, по сути, на треке папке у меня есть аудио сигнал, и установка рендера через неё должна работать. Возможно, что-то не так с установками солирования и мьютирования треков в процессе работы скрипта. Пока не могу найти. Может, кто-нибудь поможет разобраться?
Сам скрипт есть в ReaPack.
 
Последнее редактирование:
@AlexLazer, не, я так пробовал. Засунуть одно трековый, типа Спайра в папку - всё будет работать, вот в темплейте типа контакта или омнисферы, как у меня, когда весь темплейт в папке - не хочет. А дрянь в конце, потому что стоит tail по умолчанию в преференсах.
 
Сделал вот так:

Render item columns_2.gif


и он, зараза, заработал как надо. Но я сегодня не выспался...))))))):Dle32:
 
Последнее редактирование:
Всё таки 2 лучше всего, если кому интересно. При 0 хватает в рендер куски с других айтемов. Но остаётся солирование некоторых треков, добавил себе в скрипт унсоло всех треков. но это совсем необязательно.
 
А встречал ли кто скрипт, который показывает UI плагина посыла через контекстное меню сенда выбраного канала?

По идее логика не сложна: контекстное меню под курсором мыши, затем проследить путь до дорожки сенда и открыть 1 slot.
Форум кокоса перерыл и ничего подобного отдельно не нашел, есть только в HeDa Track Inspector.

Нашел только скрипт, который открывает все UI сендов которые задействованы на канале, но это не удобно и загромождает экран окнами лишних плагинов.
 
Последнее редактирование:
Помогите пожалуйста отредактировать скрипт. Изначально я его нашел на этом форуме, но мне нужен чуть другой функционал. Мне не хватает знаний чтобы переделать его под себя.

Изначально скрипт убирает тайм селекшн и закрывает миди эдитор. биндится на клавишу ESC.
В скрипте указаны вроде бы как Floating Windows. Но мне нужно, чтобы закрывался миди эдитор, который в доке.

Поэтому логика работы должна быть такой:

Если открыт эдитор = закрыть его.
Если эдитор закрыт = убрать тайм селекшн

то есть через if/else должно работать. Если миди-эдитор закрыт, то штатно убираем тайм селекшн...
 

Вложения

Получилось, благодаря разбору скрипта от Арчи. Моя ошибка была в том, что я при выполнении скрипта забывал сохранить внесенные изменения и поэтому ничего не работало.

Код:
    local MidiEditor = reaper.MIDIEditor_GetActive()
    sel_start, sel_end = reaper.GetSet_LoopTimeRange(false, false, 0, 0, false)
    time_selection_exists = sel_start ~= sel_end
    
    if MidiEditor then
      reaper.MIDIEditor_OnCommand( MidiEditor, 40794 )--View: Toggle show MIDI editor windows
    
      reaper.Undo_BeginBlock()
      reaper.Undo_EndBlock( "Close Midi Editor", 1 )
    else
     reaper.Main_OnCommand(40020, 0); -- remove selection
    end
 
  • Like
Реакции: Mr_Tsonts
reaper не удалось найти совместимую версию языка phyhon
reaper, phyhon последние версии, Windows 10 LTSC, последние обновления 2018 года.
В настойках рипер пытался указать каталог, файл dll в ручную.
204935
 

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