reaper.Undo_BeginBlock() --call to start a new block
---------------------------------------------------------
toggle_state = reaper.GetToggleCommandState(reaper.NamedCommandLookup("_S&M_DUMMY_TGL1"),0) -- получаем 0 если отключенно , и 1 если включенно
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 = reaper.TrackFX_GetInstrument( track ) -- если не инструмент текущий FX, то получим значение = -1
if instrument ~= i-1 then -- делаем условие, что если индекс FX-а не равен индексу инструмента, то -
if toggle_state == 0 then -- тут как и раньше, если state = 0 то делать вот это
reaper.TrackFX_SetEnabled(track, i-1, 1 ) -- Unbypass FX
ComandID = "_S&M_DUMMY_TGL1" --
reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0) -- переключаем state Dummy Экшина
--------------------------------------------------------------------------------------------------
else -- в противном случае
reaper.TrackFX_SetEnabled(track, i-1, 0) -- Bypass FX
ComandID = "_S&M_DUMMY_TGL1" --
reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0) -- переключаем state Dummy Экшина
---------------------------------------------------------------------
end
end
end
end
----------------------------------------------------------------------------------------------------
reaper.Undo_EndBlock("Bypass all FX (except VSTi) for all tracks",1)
reaper.PreventUIRefresh(1)