На 1 мс?
Сделайте пинг в локальной сети какого ни буть компа. Если свечи и провода нормальные, то задержка и на 150 метрах будет не существенная. Да и не важна тут особо задержка - это же бэкап система.
На 1 мс?
Сделайте пинг в локальной сети какого ни буть компа. Если свечи и провода нормальные, то задержка и на 150 метрах будет не существенная. Да и не важна тут особо задержка - это же бэкап система.
Для тысяч километров будет работать только с реальными IP и будет зависеть от оборудования по пути, и повторюсь - цель ведь не синхронизация сэмпл в сэмпл, а принцип синхронной работы и самого проекта.
Для тысяч километров будет работать только с реальными IP и будет зависеть от оборудования по пути, и повторюсь - цель ведь не синхронизация сэмпл в сэмпл, а принцип синхронной работы и самого проекта.
Да, по этому это движение энтузиастов для энтузиастов.
Есть интересная задача - появилась интересная реализация.
Развиваться она будет ровно до возникновения новой интересной задумки или смены хобби или отсутствия времени по причине навалившейся работы или вот как с Женей - смерти.
@vitalker, Никто не забыт, ничто не забыто.
Своё мнение я по отношению к скрипта я уже высказал. Заниматься скриптингом ради процесса бессмысленно. Появится задача - реализуем. На сегодняшний день у меня есть пара таких:
1) Универсальные хоткеи. Например дупликат всего в зависимости тот фокуса по одной клавише. Сейчас к сожалению для треков и айтемов это разные команды.
2) Мод для ретроспектив рекордс.
3) Расширенный набор команд в зависимости отфокуса. (Что-то подобное делали @Aleksandr Oleynik и @diggidon, но то было слишком замудрённым и сложно настраиваемым. Не уверен конечно что меня получится лучше, но идея давно витает в воздухе.
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 мне подсказывал, когда у меня не срабатывал один скрипт. Но тут уже по ситуации.
@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)
Помнится на самой заре скриптописания, толи Саша Олейник, толи ещё кто, написал по запросу однофорумчан мега крутецкий скрипт. Как позже выяснилось в самом рипере был такой экшн.
Как итог куча потерянного времени и плюс навыков в скриптописание.
Ну и я, собственно, просто для примера кода. Скрипты, на самом деле, я писать пока что так и не научился. Только вот такие простенькие. Или переделать из другого.
Еще например рендер суммы айтемов, я эту фишку впервые и единожды видел только в Studio One, но и в рипере отлично реализуется, для чего также имеется мой скрипт
@Aleksandr Oleynik, Александр, вы незнаете какими способами я решаю задачи, я точно уверенно могу сказать что без скриптов можно решить любую задачу и сдать трек под ключ. Ваших целей я незнаю, поэтому мнения расходятся. Я утверждаю за себя, если вы за себя, на этом все.
Скрипты это плюс удобства в работе, но не точная необходимость без которой не решается задача.