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

  • Автор темы Автор темы drzhnn
  • Дата начала Дата начала
Вот какой вопрос возник -
Скрипт привязан к конкретному проекту с точки зрения нужных событий. Запускается вместе с проектом.
А как его отключать вместе с выходом из проекта (выбором нового)?
[DOUBLEPOST=1437584476,1437290604][/DOUBLEPOST]Для себя пока понял, что использовать скрипты можно только для функций управления.
Для РиалТайм действий, связанных с временем, например изменением какого-либо параметра за определённое время - сделать не реально.
Я не нашёл возможность использовать в качестве еденицы прироста сэмпл, как минимальную величину дискретизации.
Такие функции как Loop, Deffer - не имеют постоянной величины связанной со временем - при одной нагрузке вычислений Loop тот-же делает 145 циклов в секунду, при другой - 20.
С Deffer-ом та-же ситуация, только он грубее - 32 цикла в секунду без нагрузки.

У кого есть какие мнения или знания по этому поводу?
 
Возможно ли как то запускать команды из media explorer секции через скрипт?
 
А возможно ли скриптом реализовать такую последовательность действий:
1) скрипт находит плагин с определенным именем (допустим, Lepou LeCto) на всех (или только на выбранных) треках проекта; 2) меняет их определенный параметр на некое определенное значение (oversampling = x8)

Хочется одной кнопкой включать максимальный оверсэмплинг в плагинах перед рендерингом, а затем также одной кнопкой его отключать
 
@Aleksandr Oleynik, я так понимаю, что-то на основе этого: http://rmmedia.ru/threads/110165/page-2#post-1881237 ?

Единственное, что будет проблематично - это если на канале несколько одинаковых fx (случай нечастый, но вполне вероятный). А то, что изменение должно быть одинаковым во всех инстанциях плагина, не упрощает решение этой проблемы?
 
Возможно ли как то запускать команды из media explorer секции через скрипт?
Вряд ли,
section_id value for
main=0,
main(alt)=100,
midi editor=32060,
midi evlist=32061.
Для эксплорера пока отсутствует?
Но,кажется, я видел где-то упоминание об эксплорере в нововведениях,сейчас не найду,возможно уже добавили.Они почему-то не сразу обновляют документацию по API.
П.С,точно,проверил вручную для media explorer section_id = 32063
Команды запустить все равно не получается,можно только состояние toggle менять
 
Последнее редактирование:
Да.
Единственное, что будет проблематично - это если на канале несколько одинаковых fx (случай нечастый, но вполне вероятный).
Если нужно менять параметр на всех без исключения плагах - это не проблема.
А то, что изменение должно быть одинаковым во всех инстанциях плагина, не упрощает решение этой проблемы?
Если нужно менять разные параметры на разных плагинах и/или на разную величину - то это делать в общем прийдётся совмем иначе.
 
В общем запилил вот такое для оверсэмплинга в инстанциях LeCto.
Код:
#fx_name = "LeCto (LePou plugins)";//set FX Name(ignoring case),Don't use "VST:" in name!!!
Add = 0;//Set 0 or 1(If the FX is not in the chain,it will be inserted)
#fx_par_name = "Oversampling";//Param_Name(ignoring case)
val = 1;//Set param value

trackcount = CountTracks(0);
i = 0;
loop(trackcount,
      track_idx = GetTrack(0,i);
         
              (FX_index = TrackFX_GetByName(track_idx, #fx_name, Add);
               Par_Num = TrackFX_GetNumParams(track_idx,FX_index);
               loop( Par_Num,
                      TrackFX_GetParamName(track_idx, FX_index,Par_Num, #fx_curr_par_name);
                   
                      stricmp(#fx_curr_par_name,#fx_par_name) == 0 ?
                      TrackFX_SetParam(track_idx, FX_index, Par_Num, val);
                   
                     Par_Num -=1;    
                    );
               );
      i += 1;
      );
Но действительно, проблема, когда на треке две инстанции плагина - скрипт действует только на первую. Исправимо?
 
Чтоб не переделывать,можно просто переименовать вторую инстанцию(например,в
LeCto (LePou plugins-2) и сделать два скрипта-для первой и второй.
Другой вариант-добавить полный перебор эффектов на совпадение имен
 
В lua выглядело бы так:
Код:
plug_name = "LeCto"
param_name = "Oversampling"
set_value = 1

trackcount = reaper.CountTracks(0)
if trackcount ~= nil then
  for i = 1, trackcount do
    track = reaper.GetTrack(0,i-1)
    fx_count = reaper.TrackFX_GetCount(track)
    if fx_count ~= nil then
      for j = 1, fx_count do
        retval, fx_name = reaper.TrackFX_GetFXName(track, j-1, "")
        if string.find(fx_name, plug_name) ~= nil then
          par_count = reaper.TrackFX_GetNumParams(track, j-1);
          for k = 1, par_count do
            retval, par_name = reaper.TrackFX_GetParamName(track, j-1, k-1, "")
            if string.find(par_name, param_name) ~= nil then
              reaper.TrackFX_SetParam(track, j-1, k-1, set_value)
            end
          end
        end
      end
    end  
  end
end
 
  • Like
Реакции: EUGEN27771 и fruitcore
Другой вариант-добавить полный перебор эффектов на совпадение имен
вот я об этом и подумал,как я понимаю, названия параметра как раз так перебираются. Только как это реализовать?
Нужно сравнивать "TrackFX_GetFXName" с "#fx_name" ?

@@Michael, спасибо;) перейти что-ль на пятерку окончательно в честь этого...)
 
Последнее редактирование:
а в API случайно нет чегонибудь связаного с модуляцией параметров, типа GetTargetParametr from source?
 
@drzhnn,

# Python 3.4.0
from reaper_python import *
import os
path, filename = os.path.split(RPR_EnumProjects(-1, '', 256)[2])
backupfolder = path + '\\Backup'
src = path + '\\*.rpp-bak'
dst = path + '\\Backup'
backupcmd = 'move' + ' ' + src + ' ' + dst
if not os.path.exists(backupfolder):
os.makedirs(backupfolder)
os.system(backupcmd)

Замечательный скрипт, но как его научить работать с кириллицей ? и вообще возможно ли такое ?
 
Если хотите работать с музыкальным софтом вообще и с Рипером в частности - забудьте о существовании кириллицы!!!! Уберите её от всюду!
Спасибо за совет , но это был просто вопрос, по поводу кириллицы. Иногда названия проэкта пишешь по русски ну а потом просто забываешь переименовать, вот и спросил )
 
Показывает FX с первого сенда трека под курсором в микшере.Для 2-3 и.т.д сенда редактируется одна цифра в скрипте,т.е отдельный скрипт,по другому пока не придумал :-).

(*.EEL)
 

Вложения

  • Like
Реакции: sd и Nagor
A/B а-ля Куб (или облегчённый вариант SWS Snapshots):
"A/B"
"="
46gif_2848142_18452574.gif
 
  • Like
Реакции: Tito
Уже как-то спрашивал, но пока так и не нашёл удобного решения -
Есть ли возможность написать скрипт, который бы последовательно задавал пользователю вопросы, заставлял заполнять данные, которые последовательно бы записывал в другой скрипт (имя которого пользователь также указывает), меняя его параметры?
Или такой вариант -
по типпу SWS снапшотов - выставил параметры на определённых плагинах, в определённых треках,
запустил скрипт, а он эти параметры занёс в указанный (при вопросе) второй скрипт.

В общем такое возможно?
 
Попробую разобраться, Спасибо
[DOUBLEPOST=1442206962,1440485659][/DOUBLEPOST]Сын помог, всё получилось....
Единственное что, не могу найти как задать относительный путь создания файла, чтоб без указания абсолютного пути файл создавался не в корне папки с установленным Рипером, а в папку Скриптов....:(
 
Точно! Попробую, спасибо
PS: Всё получилось!
Может ещё кому понадобится, код -

PHP:
GetUserInputs("Save config as", 1, "Filename", #filename);
GetExePath(#retval);
sprintf(#path, "%s\\Scripts", #retval);
sprintf(#fullpath, "%s\\%s.eel", #path, #filename);
f = fopen(#fullpath, "w");

Создаёт файл с заданным пользователем именем и расширением .eel в папке Scripts в директории где лежит EXE-шник Рипера.
 
Последнее редактирование:
  • Like
Реакции: lil-burn
На сколько я понимаю - предлагается организовать Банк Скриптов, который будет включён в инсталяшку Reaper-а так-же, как сейчас включён какой-то базовый набор JS-ов.
 
На базе дистрибутива можно будет сделать расширение, которое будет автоматом обновлять базу, так что вряд ли её встроят в официальный релиз.

Как я представляю себе командную работу над дистрибутивом:
- любой человек копирует в свой гитхабовский акк дистрибутив целиком (fork), вносит в него правки (добавляет свои скрипты), далее делает из этого Pull Request (т.е. создаёт запрос на объединение изменённого им дистрибутива с имеющимся). Члены коллаборации решают принимать или нет эти объединения, и, если скрипт годный и относительно рабочий, он входит в полный дистрибутив.
 
а как в lua скрипте убрать undo? в eel по моему нужно дописать:
Undo_OnStateChange("");
CSurf_FlushUndo(force);
в начале или конце скрипта
а как в lua это сделать?
 
@Aleksandr Oleynik, да я в курсе про это, уже и на кокосе пошарился, как не пробовал в скрипт подставлять не работает в lua , да и в eel вроде не со всеми командами, пример примитивного скрипта мог бы помочь
 

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