Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER General Discussion Forum

Reply
 
Thread Tools Display Modes
Old 09-18-2020, 06:46 PM   #1
Ice
Human being with feelings
 
Join Date: Aug 2014
Posts: 884
Default Strip all bypassed and inactive plugins from closed project file?

The question first and reason follows.

Question:
Can I strip out all plugins that are bypassed and inactive from a closed project file?

Reason:
In doing sound design for film & games I keep a lot, and I do mean a LOT of plugin options at the ready. While I find Reaper to be quite stable, there are often enough times where projects don't want to re-open, even if they weren't having any issues when they were last opened.

This also presents itself fairly often when opening an archived session.

This is nearly always fixed by opening the project with all plugins offline.

My issue is, when getting a project open this way (plugins offline), with all the plugin options I keep handy. It's difficult to determine exactly what I DID have enabled.

If I can remove all plugins that are bypassed/inactive from the closed project, then I know that every plugin that is still in the opened project, even when opened with plugins OFFLINE, are supposed to be there.
Ice is offline   Reply With Quote
Old 09-18-2020, 09:36 PM   #2
Ice
Human being with feelings
 
Join Date: Aug 2014
Posts: 884
Default

I think I found what to cut out.

Use at your own risk on a copy!

Include these and everything in-between a bracket of a plugin to remove, in a text editor:

Quote:
BYPASS 1 0 0

WAK 0 0
So example (if there is automation there will be a lot of events in addition to this, but still between the brackets mentioned above):

Quote:
BYPASS 1 0 0
<VST "VST3: MFlanger (MeldaProduction)" MFlanger.vst3 0 "" 1126396409{4D656C646170726F4D4145264D414526} ""
+XEjQ+5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAA AAAAIAAAAAAAAAEAIAAAEAAAAAABAA
AAEAAAEAAAB42l1QW2uDMBh991eEb6/bvGxuCkkK6ywUKhMj27PVrzYsSySJo+zXDxT70Ndz45xDN5cfR X7ROmk0g/gxAoK6M73UA4PJnx4y2PCAljvV6gGtQ++lHhy5
YxAD2RrtrVEKrSt0e1TYM4iAFL30xgr5hwyy55f79DUDcqjFqK T3OBMxgzTLb9GEQZznQMr2cth9vCnTfS8pTwmQEj1atzVKtaPD Xni0aOYalZoGqRtj1LG1V8FMfa7T
8jhP0wQ4XWISTr9k788lp8JMtkNSWTxJ5dHO0yMIOQ1XSbiaAl ru3/c1OvQhD6g7tyMS0RRVVReiaBZfQMObvxwP/gGQaHVIAAEAAAAAAAB42l1QW2uDMBh991eEb6/b
vGxuCkkK6ywUKhMj27PVrzYsSySJo+zXDxT70Ndz45xDN5cfRX 7ROmk0g/gxAoK6M73UA4PJnx4y2PCAljvV6gGtQ++lHhy5YxAD2RrtrVEK rSt0e1TYM4iAFL30xgr5
hwyy55f79DUDcqjFqKT3OBMxgzTLb9GEQZznQMr2cth9vCnTfS 8pTwmQEj1atzVKtaPDXni0aOYalZoGqRtj1LG1V8FMfa7T8jhP 0wQ4XWISTr9k788lp8JMtkNSWTxJ
5dHO0yMIOQ1XSbiaAlru3/c1OvQhD6g7tyMS0RRVVReiaBZfQMObvxwP/gGQaHVI
AFByZXNldHM6IDAAEAAAAA==
>
PRESETNAME "Presets: 0"
FLOATPOS 0 0 0 0
FXID {3FA83120-932D-B142-9A7F-16EDC77AD57E}
WAK 0 0
This indicates the plugin is bypassed:

Quote:
BYPASS 1 0 0
And this means it's offline:

Quote:
BYPASS 0 1 0
Ice is offline   Reply With Quote
Old 09-18-2020, 11:32 PM   #3
sonictim
Human being with feelings
 
sonictim's Avatar
 
Join Date: Feb 2020
Location: Los Angeles
Posts: 463
Default

You're Chunking now! Awesome!
sonictim is offline   Reply With Quote
Old 09-19-2020, 01:40 AM   #4
Embass
Human being with feelings
 
Embass's Avatar
 
Join Date: Jan 2014
Posts: 923
Default

before you close project run this script. it saves active fx.
Code:
-- lua script

-- save active fx

for i = 0, reaper.CountTracks(0) - 1 do
	local track, fx_indexes = reaper.GetTrack(0, i), {}
	for fx_index = 0, reaper.TrackFX_GetCount(track) - 1 do
		if reaper.TrackFX_GetEnabled(track, fx_index) and 
		not reaper.TrackFX_GetOffline(track, fx_index) then
			table.insert(fx_indexes, fx_index)
		end
	end
	if #fx_indexes > 0 then
		local str_fx_indexes = table.concat(fx_indexes, " ")
		reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", str_fx_indexes, true) -- write to track obj
	else
		reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", "", true) -- clear
	end
end
open project in fx offline mode and run this script. it restores active fx.
Code:
-- lua script

-- restore active fx

reaper.PreventUIRefresh(1)
reaper.Undo_BeginBlock()
for i = 0, reaper.CountTracks(0) - 1 do
	local track = reaper.GetTrack(0, i)
	local ok, str_fx_indexes = reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", "", false)
	if ok and str_fx_indexes ~= "" then
		for str_fx_index in str_fx_indexes:gmatch("%S+") do
   			local fx_index = tonumber(str_fx_index)
   			reaper.TrackFX_SetEnabled(track, fx_index, true)
   			reaper.TrackFX_SetOffline(track, fx_index, false)
		end
	end
end
reaper.Undo_EndBlock("Restore active fx", -1)
reaper.PreventUIRefresh(-1)
Embass is offline   Reply With Quote
Old 09-19-2020, 04:24 AM   #5
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

Quote:
Originally Posted by Ice View Post
I think I found what to cut out.

Use at your own risk on a copy!

Include these and everything in-between a bracket of a plugin to remove, in a text editor:



So example (if there is automation there will be a lot of events in addition to this, but still between the brackets mentioned above):



This indicates the plugin is bypassed:



And this means it's offline:
The ability to text edit almost any type of file is probably the best feature of REAPER.
Breeder is offline   Reply With Quote
Old 09-19-2020, 08:35 AM   #6
Ice
Human being with feelings
 
Join Date: Aug 2014
Posts: 884
Default

Quote:
Originally Posted by Embass View Post
before you close project run this script. it saves active fx.
Code:
-- lua script

-- save active fx

for i = 0, reaper.CountTracks(0) - 1 do
	local track, fx_indexes = reaper.GetTrack(0, i), {}
	for fx_index = 0, reaper.TrackFX_GetCount(track) - 1 do
		if reaper.TrackFX_GetEnabled(track, fx_index) and 
		not reaper.TrackFX_GetOffline(track, fx_index) then
			table.insert(fx_indexes, fx_index)
		end
	end
	if #fx_indexes > 0 then
		local str_fx_indexes = table.concat(fx_indexes, " ")
		reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", str_fx_indexes, true) -- write to track obj
	else
		reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", "", true) -- clear
	end
end
open project in fx offline mode and run this script. it restores active fx.
Code:
-- lua script

-- restore active fx

reaper.PreventUIRefresh(1)
reaper.Undo_BeginBlock()
for i = 0, reaper.CountTracks(0) - 1 do
	local track = reaper.GetTrack(0, i)
	local ok, str_fx_indexes = reaper.GetSetMediaTrackInfo_String(track, "P_EXT:emb_active_fx_indexes", "", false)
	if ok and str_fx_indexes ~= "" then
		for str_fx_index in str_fx_indexes:gmatch("%S+") do
   			local fx_index = tonumber(str_fx_index)
   			reaper.TrackFX_SetEnabled(track, fx_index, true)
   			reaper.TrackFX_SetOffline(track, fx_index, false)
		end
	end
end
reaper.Undo_EndBlock("Restore active fx", -1)
reaper.PreventUIRefresh(-1)
Cheers! I'll give this a go.
Ice is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:52 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.