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

J T

Member
Регистрация
17 Май 2011
Сообщения
143
Реакции
23
Возраст
37
Адрес
RF
@@Michael, отлично, благодарю. А можно ли сделать так, чтобы рипит включался при сдвиге границ выделения? А то получается при выделении кнопка рипит не отжимается.
 

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
Мой пост был не об этом, а о том, как выключить defer() одного скрипта из другого скрипта. defer() для каждого скрипта свой.
Михаил, и как, ответ нашёлся положительный?
Мне бы такая возможность также пригодилась!
 

@Michael

Well-Known Member
Регистрация
14 Дек 2010
Сообщения
969
Реакции
1.461
Адрес
Орёл / Москва
Через переменные, которые запоминаются с помощью SetExtState. То есть сделать переменную условием выполнения какого-либо atexit в конкретном скрипте.
 

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
Эээээээ, я и atexit то пока не знаю как применить :(.....
Но то, что можно - это очень хорошо.
Если есть ряд кнопок привязанных к разным скриптам с разными defer(), то это чуть ли не единственный способ не устроить хаос из скриптов, если пользователь начнёт эти кнопки нажимать одну за другой не дождавшись выполнения defer() запущенного одним из скриптов.
Нужно как-то сбрасывать ожидание запрограмированного события, если пользователь передумал и запустил следом новый скрипт, предпологающий ожидание совсем другого события.

А не могли бы вы привести какой-то очень простой пример двух трёх скиптов, defer() которых гасился бы запуском следующего (из серии)?
Хреновая у меня усваяемость по теории...., только на практических примерах :(
 
Последнее редактирование:

@Michael

Well-Known Member
Регистрация
14 Дек 2010
Сообщения
969
Реакции
1.461
Адрес
Орёл / Москва
J T,
PHP:
function auto() local startOut1, endOut1
  startOut, endOut = reaper.GetSet_LoopTimeRange2(0, false, true, 0, 0, true)
  curr_timesel = endOut - startOut
  if curr_timesel ~= prev_timesel then
    if curr_timesel > 0 then
      reaper.GetSetRepeatEx(0,1)
    else
      reaper.GetSetRepeatEx(0,0)
    end
  end
  prev_timesel = curr_timesel
  reaper.defer(auto)
end

function main_loop()
  windowOut = reaper.BR_GetMouseCursorContext()
  if windowOut ~= "transport" then
    mode = 1
   else
    mode = 0
  end
  if mode == 1 then
    auto()
  end
  reaper.defer(main_loop)
end

main_loop()

Aleksandr Oleynik,

в скрипте на исполнение:
Код:
функция ()
(
переменная = getextstate;
переменная == 1 ?
defer("функция")
переменная == 0 ?
atexit("");
):
в управляющем скрипте:
Код:
переменная = 0; (отключит все defer, выполняемые в данный момент и зависимые от этой переменной)
setextstate(переменная);
 
Последнее редактирование:

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
@@Michael, огромное спасибо - буду пробовать. А то реально тупик возник у меня с переключателями пресетов на скриптах, которые Пользователь может беспорядочно тыкать не дождавшись выполнения defer.

Вот только не очень понимаю как быть в ситуации, когда скрипт (в пачке скриптов) должен являться одновременно Управляющим для всех прочих и Исполняющим от всех прочих?
Придётся создавать список из переменных? По одной на каждый скрипт и писать в defer() секции скрипта весь список через &&?
 
Последнее редактирование:

J T

Member
Регистрация
17 Май 2011
Сообщения
143
Реакции
23
Возраст
37
Адрес
RF
@@Michael, "\Reaper\Scripts\repeat_while_loop.lua:16: 'reaper.BR_GetMouseCursorContext' is unknown" однако.
 

J T

Member
Регистрация
17 Май 2011
Сообщения
143
Реакции
23
Возраст
37
Адрес
RF
@@Michael, если вы про SWS, то он установлен (2.7.0), либо я чего-то недопонимаю. В Extension / Project StartUp Action поставил данный экшн. При перезапуске проекта вылазит отчет об ошибке скрипта. Не могу понять где я ошибся?
 

@Michael

Well-Known Member
Регистрация
14 Дек 2010
Сообщения
969
Реакции
1.461
Адрес
Орёл / Москва
Ни в чём. Это баг. Попробуйте установите (с этой бетой у меня работает):
Нужно сохранить проект после выбора этого скрипта в качестве стартового экшна. Валидным будет только этот проект (можно на его основе сделать шаблон, если вы всё время будете использовать этот скрипт).
 
Последнее редактирование:

J T

Member
Регистрация
17 Май 2011
Сообщения
143
Реакции
23
Возраст
37
Адрес
RF
@@Michael, с пре-релизом SWS 2.7.1 скрипт заработал, теперь всё работает и настроение поднимает. Очень благодарю. :)
 

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
Коллеги, пытаюсь разобраться в использовании функции atexit - пока ни фига не выходит....

Если можно - на примере -
есть скрипт -
PHP:
    tr = GetTrack(0, 0);
   
     function wait_001()
    (        
    TrackFX_GetParamNormalized(tr, 0, 2) == 1 ?
     (
      TrackFX_SetParam(tr, 0, 1, 0);
      );
    TrackFX_GetParamNormalized(tr, 0, 0) == 1 ?
     (
      TrackFX_SetParam(tr, 0, 1, 100);
      );
    
    defer("wait_001()");
        
      );
    
          wait_001();
defer в нём бесконечный - т.е. скрипт запускается и всё время ждёт наступления двух событий.
Как в него вставить функцию atexit так, чтобы она останавливала работу скрипта по третьему событию? -
PHP:
TrackFX_GetParamNormalized(tr, 0, 4) == 1 ?
Так не работает -
PHP:
    tr = GetTrack(0, 0);
   
     function wait_001()
    (        
    TrackFX_GetParamNormalized(tr, 0, 2) == 1 ?
     (
      TrackFX_SetParam(tr, 0, 1, 0);
      );
    TrackFX_GetParamNormalized(tr, 0, 0) == 1 ?
     (
      TrackFX_SetParam(tr, 0, 1, 100);
      );
    
    defer("wait_001()");        
      );
    
          wait_001(); 
  
    TrackFX_GetParamNormalized(tr, 0, 4) == 1 ?  
        (
         atexit("");
         );
 

@Michael

Well-Known Member
Регистрация
14 Дек 2010
Сообщения
969
Реакции
1.461
Адрес
Орёл / Москва
Попробуйте так
PHP:
tr = GetTrack(0, 0);

function wait_001() (
  TrackFX_GetParamNormalized(tr, 0, 4) != 1 ? ( 
    TrackFX_GetParamNormalized(tr, 0, 2) == 1 ? (
      TrackFX_SetParam(tr, 0, 1, 0);
      );
    TrackFX_GetParamNormalized(tr, 0, 0) == 1 ? (
      TrackFX_SetParam(tr, 0, 1, 100);
      );
    ) : (
      atexit("");
  ); 
  defer("wait_001()");      
);
  
  
wait_001();
 

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
Так работает. Понял. Спасибо!
defer останавливается ровно на период пока
PHP:
TrackFX_GetParamNormalized(tr, 0, 4) != 1
Скрипт при этом остаётся запущенным.
[DOUBLEPOST=1435673118,1435670318][/DOUBLEPOST]Михаил, я на форуме Кокосов видел пару скриптов (правда не EEL) в которых atexis использовался не только для закрытия текущего defer, но и запуска новой функции.... - что-то писали в скобках, в кавычках.
Не подскажете как это оформить правильно?
 

@Michael

Well-Known Member
Регистрация
14 Дек 2010
Сообщения
969
Реакции
1.461
Адрес
Орёл / Москва
Код:
atexit("
Main_OnCommand(action_id, 0);
UpdateArrange();"
);
или

Код:
atexit("start_new_function()") // при этом перед этим конечно нужно указать, что находится внутри start_new_function()
 

Aleksandr Oleynik

Well-Known Member
Регистрация
16 Янв 2007
Сообщения
26.360
Реакции
20.064
Возраст
62
Адрес
Киев
Очень мощный функционал, ещё раз Спасибо!
[DOUBLEPOST=1435696222,1435684232][/DOUBLEPOST]Существует ли прямая возможность отправить MIDI (NOTE) OFF при помощи скрипта? Не через активацию Экшина.
[DOUBLEPOST=1436085247][/DOUBLEPOST]Коллеги,
ну ОООООЧЕНЬ НУЖНО иметь возможность ставить таймауты между выполняемыми в скрипте командами.
Не важно на сколько время выставленное в ожидании будет прям точно выполняться, нужно просто иметь возможность ставить задержку между последовательно выполняемыми командами.
 

LiSICin

Member
Регистрация
19 Июл 2014
Сообщения
62
Реакции
14
Адрес
Saratov
Ребят, подскажите как правильно установить сей чудный скрипт, ибо при нажатии на кнопку "Create" выскакивает такая ошибка:
Снимок экрана 2015-07-07 в 11.11.26.png
 

Mateush1982

Active Member
Регистрация
5 Авг 2009
Сообщения
433
Реакции
197
Возраст
42
Адрес
Krasnoyarskiy kray

LiSICin

Member
Регистрация
19 Июл 2014
Сообщения
62
Реакции
14
Адрес
Saratov
Все выделено и гейн не на нуле пробовал, один фиг ошибка(
 

Mateush1982

Active Member
Регистрация
5 Авг 2009
Сообщения
433
Реакции
197
Возраст
42
Адрес
Krasnoyarskiy kray
а прикольно было бы соединить данный скрипт со скриптом от EUGEN27771 "огибающая по шипящим"!!!! то есть первые шаги как есть фильтр ,Гейт и.т.д а на последнем этапе возможность строить плавную огибающую... Как Вам "идейка"- можно "Rea"-лизовать? :)
 

LiSICin

Member
Регистрация
19 Июл 2014
Сообщения
62
Реакции
14
Адрес
Saratov
@Mateush1982, Включил, ни каких изменений. Может на маке не работает эта фитча?
 

Mateush1982

Active Member
Регистрация
5 Авг 2009
Сообщения
433
Реакции
197
Возраст
42
Адрес
Krasnoyarskiy kray
у меня mac!!! галки на beta и official release - затем check now! не показывает 2.7.1?
a Reaper 5.0rc4?
 
Последнее редактирование:

LiSICin

Member
Регистрация
19 Июл 2014
Сообщения
62
Реакции
14
Адрес
Saratov
@Mateush1982, Да, версия Рипера крайняя 5-я. Галки все стоят, при нажатии "check now"
Снимок экрана 2015-07-07 в 12.16.41.png
 

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

Сверху