Попробуйте убрать строкиВот я в этот скрипт смотрю и не вижу не одного слова про это окошко
reaper.MB('step'..step+1,'',0)
Последнее редактирование:
Попробуйте убрать строкиВот я в этот скрипт смотрю и не вижу не одного слова про это окошко
Вам спасибо. Я уже пеляю по Вашему примеру себеСпасибо!Сработало!
Это не раздражённость, это понимание того, что помощь идёт в песок.Понимаю их раздраженность "чайниками"
+100500и задавайте вопросы вида "как работает", а не "что и куда вставить"
Ну тут не соглашусь . Зачем учить Азбуку если цель Написать Роман "Война и Мир"? все само собой придет, надоест запихивать стандартные екшины в скрипты и неотвратимо придем к API Это точноПопытки запихнуть стандартные Экшины в скрипт и воспользоваться его функционалом только для Логики (if, then, for, do, else.......) - это путь в ни куда.
Можете не соглашаться, но я то этот путь прошёл - тогда хотя бы прислушайтесь к опыту и мнению.Ну тут не соглашусь
Полностью согласен! сначала с условиями всякими в голове устаканится ,а потом и потихоньку экшены из скриптов начинать убирать ,так понимание и приходит,а если все и сразу начинаешь пихать в голову ,то просто путаница получается и вообще ничего не понимаешь.Ну тут не соглашусь . Зачем учить Азбуку если цель Написать Роман "Война и Мир"? все само собой придет, надоест запихивать стандартные екшины в скрипты и неотвратимо придем к API Это точно
Вот видите Вы прошли, а нам не разрешаетено я то этот путь прошёл
Почему же не разрешаю?Вот видите Вы прошли, а нам не разрешаете
Почему тишина там все описано подробно по той описи я и нашел что ReaEq у меня в Vsti "убежал"так Не Пойдёт!
--Script PEAK:INCREASE-DESREASE
reaper.Undo_BeginBlock()
steps = 6
function Action(step)
if step == 0 then
for i = 1,5 do --increase
ComandID = 40155 reaper.Main_OnCommand(ComandID,0)--Peaks: Increase peaks view gain
end
elseif step == 1 then
for i = 1,5 do --increase
ComandID = 40155 reaper.Main_OnCommand(ComandID,0)
end
elseif step == 2 then
for i = 1,5 do --increase
ComandID = 40155 reaper.Main_OnCommand(ComandID,0)
end
elseif step == 3 then
for i = 1,5 do --increase
ComandID = 40155 reaper.Main_OnCommand(ComandID,0)
end
elseif step == 4 then
for i = 1,5 do --increase
ComandID = 40155 reaper.Main_OnCommand(ComandID,0)
end
elseif step == 5 then
for i = 1,25 do --increase
ComandID = 40156 reaper.Main_OnCommand(ComandID,0)--Peaks: Decrease peaks view gain
end
end
end
cur_key = reaper.GetExtState( 'test', 'step' )
if not tonumber(cur_key) then cur_key = 0 else cur_key =tonumber(cur_key) end
if cur_key > steps-1 then cur_key = 0 end
Action(cur_key)
reaper.SetExtState( 'test', 'step', cur_key+1, false )
reaper.Undo_EndBlock("Peak",1)
Вот на него вроде смотришь все описано, все понятно, но опять же непонятно от куда вы это все взяли ?Пока с экшенами делал про всякие if,for, else понял что это такое и как работает,а вот сами команды как вы ищите, по какому принципу? не могу понять.Вы с моим вторым скриптом разобрались?
При таком количестве треков, без многоканальных VSTi в подпапках, шин.. и у меня корректно работает.@YuriOl, сейчас проверил - у меня всё корректно работает.
Не всегда просто найти нужную API функцию, а иногда её и нет в общем, приходится её создавать из других, из стандартных LUA функций, а бывает, что и тупичёкс...Скажите вообще с чего начинать поиск всех команд ? откуда вы их берете ?По моему если исходить из логики, то там вообще ничего не найти.
----------------------------------------------------------------------------------------------------
local msg = function(M) reaper.ShowConsoleMsg(tostring(M).."\n") end -- это функция для отладки, тот самый принт
----------------------------------------------------------------------------------------------------
reaper.Undo_BeginBlock() --call to start a new block
---------------------------------------------------------
toggle_state = reaper.GetExtState('section_FX', 'On_Off') -- проверяем значение ключа On_Off
if not tonumber(toggle_state) then -- если значения ещё нет, то -
toggle_state = 0 -- то назначаем его = 0
else
toggle_state = tonumber(toggle_state) -- если есть, то берём его и превращаем из строки в номер
end
function IsInstrument(track, fx) -- это код выполняемой функции
local _, FXName = reaper.TrackFX_GetFXName(track, fx, '' ) -- получаем имя FX
if FXName:match('^VSTi:') then -- если в начале имени есть VSTi, то
is_FX_instrument = true -- то вот этому параметру присваиваем true
else -- а если нет, то
is_FX_instrument = false -- то вот этому параметру присваиваем false
end
return is_FX_instrument -- возвращаем в точку вызова функции значение этого параметра
end
local counttracks = reaper.CountTracks(0) -- даёт значение кол-ва треков
if counttracks == nil then return end -- если треков нет, то и ни чего не делать :)
for i=1, counttracks do -- создаём цикл опроса по каждому треку
local track = reaper.GetTrack(0, i-1) -- получаем объект Медиа Трек для каждого порядкового номера трека
countFX = reaper.TrackFX_GetCount( track ) -- для каждого трека получаем кол-во FX-ов на нём
if countFX == nil then return end -- если FX нет, то и ни чего не делать :)
for i=1, countFX do -- создаём цикл опроса по каждому FX-у на треке
instrument = IsInstrument(track, i-1) -- вызываем функцию IsInstrument и передаём в неё два парапметра,
-- Медиа Трек текущий и индекс (порядковый номер) FX-а и обратно получаем true - если это VSTi
-- false - если это НЕ VSTi
if instrument == false then -- делаем условие, что если FX не VSTi, то -
if toggle_state == 0 then -- тут как и раньше, если state = 0 то делать вот это
reaper.TrackFX_SetEnabled(track, i-1, 1 ) -- Unbypass FX
reaper.SetExtState('section_FX', 'On_Off', 1, false)
--------------------------------------------------------------------------------------------
else -- в противном случае
reaper.TrackFX_SetEnabled(track, i-1, 0) -- Bypass FX
reaper.SetExtState('section_FX', 'On_Off', 0, false)
--------------------------------------------------------------------------------------------
end
end
end
end
----------------------------------------------------------------------------------------------------
reaper.Undo_EndBlock("Bypass all FX (except VSTi) for all tracks",1)
reaper.PreventUIRefresh(1)
Зачем эта функция? назначение on-off? А все понял она скрипт @step@toggle_state = reaper.GetExtState('section_FX', 'On_Off') -- проверяем значение ключа On_Off
if not tonumber(toggle_state) then -- если значения ещё нет, то -
toggle_state = 0 -- то назначаем его = 0
else
toggle_state = tonumber(toggle_state) -- если есть, то берём его и превращаем из строки в номер
end
Не разбирался с этим. Я в общем в своих скриптах редко использую Undo блок@Aleksandr Oleynik, а за что отвечает extraflags в Undo_EndBlock? Кто-то единицу пишет, кто-то ноль, у меня чаще корректно работает при -1, его обычно и пишу.
Она нужна, если нужно запоминать состояние чего либо после закрытия скрипта и до закрытия проекта.Зачем эта функция? назначение on-off? А все понял она скрипт @step@
А в каких случаях это скрипту нужно?
В таких вот ситуациях (когда нужно сделать что-то из функий присутствующих в стандартных Экшинах, я даже не заморачиваюсь, тоже использую конструкцию вызова Экшина.Вот что то начал делать ,ну опять же с экшенами(Проверьте что правильно,а что не правильно вроде все работает ?) предполагаю что на место экшенов нужно что то вроде reaper.GetMediaItem ну и что то связаное с peaks
Кастом на две строчки (нужен скрипт из Reapack):Нарезал куски из аудио на нескольких треках...и эти треки надо зарендерить в один трек ( который может быть встал бы под эти треки )..
спс.
А где данный апгрейчик взять то?Так, пресеты-таки. По крайней мере для обучения - вещь невероятная.
Сами настройки очень близки к ReaComp, поэтому я прикинул, что их можно на ReaComp и выставить спец. кнопочкой.
Мне нравится.
Посмотреть вложение 139744