для этого есть экшн Xenakios/SWS: Toggle selected tracks height A/BВ общем основная задача - выделенные треки сделать в минимальном масштабе (допустим value = 20)
Он не должен умЕньшенные треки увеличить, а увеличенные уменьшить (когда у выделенных треков разный масштаб относительно друг друга). Ну то есть два цикла будет вместо одногоПравильно - это как?
Это один экшн. В скрипте можно сделать условия, если же ты будешь собирать в cycle редакторе, то там просто будет порядок выполнения, который может сбиться - это не о том совсем.Потом работаем то да се, выделяются новые треки снимаем, опять выделяем нужные треки (не обязательно те что были раньше, можем просто забыть какие/ и что????? (включаем экшн 2)
@Archchie, поможешь создать скрипт? Никак не могу с алгоритмом условий разобраться. В общем основная задача - выделенные треки сделать в минимальном масштабе (допустим value = 20). Но это должно быть в режиме Toggle. То есть сохранение предыдущего масштаба, если все треки в проекте стали маленькими. Если часть не выделенных треков остались с нормальным масштабом, то вернуть выделенным трекам этот масштаб (например по самому большому, если масштабы у не выделенных треков оказались разными, не учитывать масштабы треков у которых lock height). Если я выделил треки с разным масштабом, то соответственно всех их либо уменьшить, либо вернуть прежний масштаб по такому же алгоритму...Скорее всего для этого случая понадобится что-то вроде Dummy toggle от SWS. Если же у выделенных треков один и тот же масштаб, то работать должно чисто на условии.
В общем я сам не знаю точно, как правильно, но суть примерно ты понял
Раз двадцать перечитал твое сообщение и не чего не понял, все что я из него понял,то что выделенные треки надо сделать в минимальном размере и сохранить размер предыдущих треков, но каких так и не понял, а при втором нажатии вообще ничего не понял, понял только то, что скрипт должен запомнить одно, а восстановить совершенно другое
@Archchie, есть выделенные треки, которые мы должны менять, а есть все остальные. Так вот, скрипт должен для восстановления масштаба выделенных треков (когда треки уже маленькие), взять масштаб с не выделенных треков. У которых он нормальный И все. И чтобы правильно работал в том случае, если у выделенных треков разный масштаб, либо один и тот же масштаб.
З.Ы. А, и вот еще последние, чтобы если все треки стали маленькими (выделенные и не выделенные), то все же сделать какой-то увеличенный масштаб, допустим 80 value
Все равно я ничего не понял.
В каком смысле "уже маленькие"borisuperful написал(а):(когда треки уже маленькие)
Взять масштаб при первом запуске, когда уменьшаем выделенные или при восстановлении???borisuperful написал(а):взять масштаб с не выделенных треков.
Что такое нормальный ???borisuperful написал(а):У которых он нормальный
Правильно - это как?borisuperful написал(а):И чтобы правильно работал в том случае, если у выделенных треков разный масштаб, либо один и тот же масштаб.
--------------------------
Правильно я понял или нет, что скрипт не чего не должен сохранять, а должен при первом нажатии уменьшить все выделенные треки, а при втором нажатии, брать самый большой из невыделенных и делать выделенные такого размера ?
--------------------------
Опиши подробнее по шагам и с конкретикой, а не "нормальный, средний, маленький, наверно, может быть".
При первом нажатии что должен сделать скрипт ? Что должен сохранить и т.д.
При втором нажатии так же что должен сделать, что восстановить
@Archchie,что непонятного то? По-моему по-другому нельзя было понять
При первом нажатии - это зависит от того, какой масштаб. Предположим у нас масштаб по умолчанию (не равен этим 20 value, то есть больше) - тогда он уменьшает. Если у выделенных треков разный масштаб относительно друг друга (то есть у части треков 20 value, у части треков больше 20 value) - можно тоже уменьшить - в любом случае у них станет одинаковый масштаб, и для второго нажатия результат такой же.
При втором нажатии после того, когда масштаб уменьшился - сделать масштаб обычным, прежним (я не знаю как это еще объяснить и не вижу ничего непонятно). И тут все зависит от того, что у нас с другими треками, которые не выделены (у которых мы масштаб не меняли). Если у них есть бОльший масштаб, то взять этот масштаб, при втором нажатии сделать его выделенным трекам. Если же у невыделенных треков масштаб оказался точно таким же (допустим я сначала одну половину треков уменьшил, потом другую половину - все треки теперь с 20 value), то увеличить масштаб в соответствии с конкретным value, который я уже выше указал, в районе 80 единиц. Иначе ему не с чего восстанавливать
@Maestro Sound, при всех прочих условиях (вроде разных масштабов не выделенных треков), при восстановлении масштаба можно все тот же value 80 сделать чтобы не париться Либо больший масштаб у не выделенных треков взять, либо их среднее арифм. рассчитать...Главное цель в том, чтобы при восстановлении масштаба не получить принципиально другой размер относительно текущего масштаба треков.
Archchie написал(а):Теперь вроде все понятно.
Поправил.если уж не учитывать масштаб треков с lock height, то тогда и сами эти треки тоже не изменять
function OpenURL(url)
local OS = reaper.GetOS()
if OS == "OSX32" or OS == "OSX64" then
os.execute('open "" "' .. url .. '"')
else
os.execute('start "" "' .. url .. '"')
end
end
local test = reaper.BR_SetArrangeView
if not test then
window = reaper.MB('Please install SWS extension', 'Error', 0) end
if window then
OpenURL("http://www.sws-extension.org/") return
end
ниче не понял. В смысле, вытереть все скрипты из соотв. папки и запускать по одному все кастомы и потом смотреть на что ругается при запуске? Тот еще способ...@Supa75, Делаеш папку снуля - старую в архив, Хорошо чистит
Нет. Ручками. Я это один раз сделалВопрос: есть ли какой либо способ определить скрипты, которые используются в кастом и цикл-экшенах?
Хочу почистить папку со скриптами. По началу столько всего накачал с Риапака Но есть проблема. Можно ли как то узнать (с помощью какого-то скрипта или каким другим вариантом) какие скрипты используются в кастом и цикл-экшинах, чтобы их не прибить заодно. Вопрос: есть ли какой либо способ определить скрипты, которые используются в кастом и цикл-экшенах?
-- Learn what script are used in custom actions and cycle action
------------------------------------------------------------------------------
local function No_Undo()end; local function no_undo()reaper.defer(No_Undo)end;
------------------------------------------------------------------------------
function GetScriptNameByID(id);
local Path = reaper.GetResourcePath()..'/reaper-kb.ini';
local file = io.open(Path,'r');
if not file then no_undo() return end;
local text = file:read('a');file:close();
return text:match(id:match('[^_](%S+)')..'%s"Custom:%s(.-)"');
end;
function GetScriptNameByCastom();
local kb_ini = reaper.GetResourcePath()..'/reaper-kb.ini';
local file = io.open(kb_ini,'r');
if not file then no_undo() return end;
local line_T,TableCast,TabCastom,Nil = {},{},{};
for var in file:lines() do;
table.insert(line_T,var);
end;
----
for i = 1, #line_T do;
if line_T[i]:match('ACT')then;
for NameScript in string.gmatch(line_T[i],"%S+") do;
local double = nil;
if string.sub(NameScript,0,1) == "_" then;
local NameByID = GetScriptNameByID(NameScript);
if NameByID then;
for i2 = 1, #TableCast do;
if NameByID == TableCast[i2]then;
double = 1 break;
end;
end;
if not double then;
table.insert(TableCast,NameByID);
if #TabCastom+1 < 10 then Nil = "00" elseif #TabCastom+1 >= 10 and #TabCastom+1 < 100 then Nil = "0" else Nil = ""end;
table.insert(TabCastom,Nil..#TabCastom+1 .." - "..NameByID);
end;
end;
end;
end;
end;
end;
return TabCastom;
end;
local function GetScriptNameByCycle();
local kb_ini = reaper.GetResourcePath()..'/S&M_Cyclactions.ini';
local file = io.open(kb_ini,'r');
if not file then no_undo() return end;
local text = file:read('a');
file:close();
local TableCicle,TableCycle,Nil = {},{};
----------------------------------
for S in string.gmatch (text, "[^|]+") do;
if string.sub(S,0,1) == "_" then
local NameByID = GetScriptNameByID(S);
if NameByID then;
local double = nil;
for i2 = 1, #TableCicle do;
if NameByID == TableCicle[i2]then;
double = 1 break;
end;
end;
if not double then;
table.insert(TableCicle,NameByID);
if #TableCycle+1 < 10 then Nil = "00" elseif #TableCycle+1 >= 10 and #TableCycle+1 < 100 then Nil = "0" else Nil = ""end;
table.insert(TableCycle,Nil..#TableCycle+1 .." - "..NameByID);
end;
end;
end;
end;
return TableCycle;
end;
local Castom = GetScriptNameByCastom();
local Cycle = GetScriptNameByCycle();
local header = "[Archie_UsedScriptsInActions:]\n\n"..
"Скрипты использующиеся в пользовательских действиях и в цикл действиях:\n"..
"Scripts used in custom actions and cycle actions:\n\n\n";
table.insert(Castom,1,header.."CASTOM ACTION: ".. #Castom.."-Scripts\n");
table.insert(Cycle,1,"\n\n\nCYCLE ACTION: "..#Cycle.."-Scripts\n");
local CastList = table.concat(Castom,"\n");
local CyclList = table.concat(Cycle,"\n");
----------------------
local path = reaper.GetResourcePath()..'/Archie_UsedScriptsInActions.ini';
local ini = io.open(path,'w');
ini:write(CastList..CyclList);
ini:close();
local OS,cmd = reaper.GetOS();
if OS == "OSX32" or OS == "OSX64" then;
cmd = os.execute('open "" '..path);
else;
cmd = os.execute('start "" '..path);
end;
if not cmd then;
reaper.ClearConsole();
reaper.ShowConsoleMsg(CastList..CyclList);
end;
no_undo();
Сегодня сделаюРебята, а есть скрипты типа - запомнить (копировать) цвет айтема и восстановить (вставить) цвет в айтем? И такое же, но с именем айтема.