ReaScripts (скрипты для Reaper) - Учимся создавать!!!

Так если они будут находится на расстоянии, то задержка наверно будет выше, не так ли?
На 1 мс?
Сделайте пинг в локальной сети какого ни буть компа. Если свечи и провода нормальные, то задержка и на 150 метрах будет не существенная. Да и не важна тут особо задержка - это же бэкап система.
[automerge]1616793905[/automerge]
Да, видимо что-то не зацепило. Или просто не вовремя.
Да просто людям подавай что то каждый день используемое.
 
На 1 мс?
Сделайте пинг в локальной сети какого ни буть компа. Если свечи и провода нормальные, то задержка и на 150 метрах будет не существенная. Да и не важна тут особо задержка - это же бэкап система.
А, ну если для таких коротких расстояний, тогда да. Я же думал о тысячах километров. :D
[automerge]1616793979[/automerge]
Да просто людям подавай что то каждый день используемое.
На самом деле Михаил прав. Он писал в той теме: https://forum.cockos.com/showthread.php?t=222764
 
Интересно хотя бы глянуть, какие команды отвечают за обмен по сети.

https://www.reaper.fm/sdk/reascript/reascripthelp.html#eel_tcp_close и далее. Но они доступны только в EEL-скриптах, так что там пришлось соорудить отдельный уровень. Данные носятся из lua-скрипта в eel-скрипт, а потом в сеть. На другом конце - в обратном порядке.
 
  • Like
Реакции: vitalker
А, ну если для таких коротких расстояний, тогда да. Я же думал о тысячах километров. :D
Для тысяч километров будет работать только с реальными IP и будет зависеть от оборудования по пути, и повторюсь - цель ведь не синхронизация сэмпл в сэмпл, а принцип синхронной работы и самого проекта.
 
@Rst7, блин, ну это круто! Интересная задумка с переносом между скриптами.
[automerge]1616795247[/automerge]
Который, кстати, уже давно Скрипты забросил и свои даже не поддерживает.
Как и большинство других скриптописателей.
 
Для тысяч километров будет работать только с реальными IP и будет зависеть от оборудования по пути, и повторюсь - цель ведь не синхронизация сэмпл в сэмпл, а принцип синхронной работы и самого проекта.
Да-да, я понял! Сама по себе возможность ТАКОГО уже очень крута!
 
Как и большинство других скриптописателей.
Да, по этому это движение энтузиастов для энтузиастов.
Есть интересная задача - появилась интересная реализация.
Развиваться она будет ровно до возникновения новой интересной задумки или смены хобби или отсутствия времени по причине навалившейся работы или вот как с Женей - смерти.
 
  • Like
Реакции: nazarol-jk35
@vitalker, Никто не забыт, ничто не забыто.
Своё мнение я по отношению к скрипта я уже высказал. Заниматься скриптингом ради процесса бессмысленно. Появится задача - реализуем. На сегодняшний день у меня есть пара таких:
1) Универсальные хоткеи. Например дупликат всего в зависимости тот фокуса по одной клавише. Сейчас к сожалению для треков и айтемов это разные команды.
2) Мод для ретроспектив рекордс.
3) Расширенный набор команд в зависимости отфокуса. (Что-то подобное делали @Aleksandr Oleynik и @diggidon, но то было слишком замудрённым и сложно настраиваемым. Не уверен конечно что меня получится лучше, но идея давно витает в воздухе.
 
  • Like
Реакции: Antonio и Landre
@belovw, я делал себе такие контекстные скрипты. Пользовался следующим способом.
В начале скрипта -
Код:
window, segment, details = reaper.BR_GetMouseCursorContext()

Вся информация по этой функции - https://www.extremraym.com/cloud/reascript-doc/#BR_GetMouseCursorContext

Выглядит это примерно так:

Код:
window, segment, details = reaper.BR_GetMouseCursorContext()
 
    if window == "tcp"
    and segment == "track" then
    (действие. которое хотим)
    elseif window == "arrange"
    and segment == "track"
    and details == "item" then
    (действие. которое хотим)
    end
Так можно перечислить сколько угодно контекстных зон.
"Действие, которое мы хотим" - это может быть или function(), которая уже была описана и задана(или же прямо тут по месту), или
ссылка на экшены/скрипты, имеющиеся в action list:
reaper.Main_OnCommand(ххххх,0) - ссылка на штатный экшн, ID которого состоит просто из цифр (вписать вместо ххххх),
reaper.Main_OnCommand(reaper.NamedCommandLookup("ххххххххх"),0) - ссылка на любой другой экшн, ID которого выглядит уже как длинный список разных букв и цифр.

Ну вот, вкратце, как-то так. Опытные скриптописатели исправят, если я что не так объяснил.
Нюансы могут быть связаны с тем, что не всегда контекст нормально снимается. То есть, иногда нужны дополнительные действия.
Это Archie мне подсказывал, когда у меня не срабатывал один скрипт. Но тут уже по ситуации.
 
  • Like
Реакции: Beckoff и belovw
@belovw, вот ещё, например, с удовольствием пользуюсь двумя своими скриптами. Первый выделяет/добавляет к выделению/снимает выделение трека или айтема, в зависимости от того, над чем находится:

Код:
reaper.Undo_BeginBlock()
window, segment, details = reaper.BR_GetMouseCursorContext()
  if details == "item" then
     item =  reaper.BR_GetMouseCursorContext_Item()
     sel_item =  reaper.IsMediaItemSelected( item )
  if sel_item == false then
     reaper.SetMediaItemSelected( item, true )
  else
     reaper.SetMediaItemSelected( item, false )
end
  else
  if segment == "track" then
     track =  reaper.BR_GetMouseCursorContext_Track()
     sel_track =   reaper.IsTrackSelected(track)
  if sel_track == false then
     reaper.SetTrackSelected( track, true )
  else
     reaper.SetTrackSelected(track, false )
end
end
end
reaper.UpdateArrange()
reaper.Undo_EndBlock("ToggleSelectTrackItem", -1)

Второй точно так же, в зависимости от контеста мьютирует трек или айтем:

Код:
reaper.Undo_BeginBlock()
window, segment, details = reaper.BR_GetMouseCursorContext()
   if details == "item" then
      item =  reaper.BR_GetMouseCursorContext_Item()
   if reaper.GetMediaItemInfo_Value( item, "B_MUTE" ) == 1 then
      reaper.SetMediaItemInfo_Value( item, "B_MUTE", 0 )
  else
      reaper.SetMediaItemInfo_Value( item, "B_MUTE", 1 )
end
  else
   if segment == "track" then
      track =  reaper.BR_GetMouseCursorContext_Track()
   if reaper.GetMediaTrackInfo_Value(track, 'B_MUTE') == 1 then
      reaper.SetMediaTrackInfo_Value(track, 'B_MUTE', 0)
  else
      reaper.SetMediaTrackInfo_Value(track, 'B_MUTE', 1)     
end
end
end
reaper.UpdateArrange()
reaper.Undo_EndBlock("ToggleMuteTrackItem", -1)
 
@belovw, мне кажется в самом рипере уже есть все что угодно, даже если нет, кастомными можно зарешать.
 
мне кажется в самом рипере уже есть все что угодно
Помнится на самой заре скриптописания, толи Саша Олейник, толи ещё кто, написал по запросу однофорумчан мега крутецкий скрипт. Как позже выяснилось в самом рипере был такой экшн.
Как итог куча потерянного времени и плюс навыков в скриптописание.
даже если нет, кастомными можно зарешать.
Не всё. Ретроспектив рекорд аудио тому доказательство.
 
Последнее редактирование:
  • Like
Реакции: elektrozz
Я может чего не понимаю, но зачем когда есть команда
Item properties: Toggle items/tracks mute (depending on focus)
40183
Он по другому работает. Вот работа моих скриптов:
Toggle_sel_mute_track_item.gif


Ну и я, собственно, просто для примера кода. Скрипты, на самом деле, я писать пока что так и не научился. Только вот такие простенькие. Или переделать из другого.
 
@belovw, мне кажется в самом рипере уже есть все что угодно, даже если нет, кастомными можно зарешать.
Это "всё что угодно" появляется постепенно, как раз после примеров активных скриптописателей.
 
мне кажется в самом рипере уже есть все что угодно, даже если нет, кастомными можно зарешать.
Это только так кажется...Например роутинг для мультиканальных VSTi не сделать быстро без темплейтов, так в любой DAW
 
  • Like
Реакции: Mr_Tsonts
Еще например рендер суммы айтемов, я эту фишку впервые и единожды видел только в Studio One, но и в рипере отлично реализуется, для чего также имеется мой скрипт
 
  • Like
Реакции: YuriOl
Последнее редактирование:
@Aleksandr Oleynik, о том что скрипты помогают делать работу быстрее. ок пусть не хит, пусть будет трек.
Вы написали, что -
@belovw, мне кажется в самом рипере уже есть все что угодно, даже если нет, кастомными можно зарешать.
Я написал, что это не так.
Всё.
 
@Aleksandr Oleynik, Александр, вы незнаете какими способами я решаю задачи, я точно уверенно могу сказать что без скриптов можно решить любую задачу и сдать трек под ключ. Ваших целей я незнаю, поэтому мнения расходятся. Я утверждаю за себя, если вы за себя, на этом все.
Скрипты это плюс удобства в работе, но не точная необходимость без которой не решается задача.
 
Скрипты это плюс удобства в работе, но не точная необходимость без которой не решается задача.
Задачи разные бывают. Может можно всё, но ещё есть такой фактор как время и оно ограничено.
 

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