You can put them all in your effects...bypass one "group", select (highlight) them all, and then go back and forth between them by hitting Control>B.
Unfortunately, as far as I know, you can only switch between two groups of effects at a time with this method.
Hi Frank.
Thanks for the suggestion.
It doesn't really help as I need to switch between the 'groups' with a foot controller - I'm currently using an FCB1010 to select different snapshots, along with sending PCs to hardware etc.
Hi, I'm not aware of a way to do this directly. But could you perhaps achieve the same thing indirectly by having the 4 different FX chains on 4 different child tracks in a folder and using custom actions to activate only one of the FX tracks at a time, depending on whether you want to twang, chicka, chug or solo?!
There's an SWS action which mutes all children in a selected folder:
SWS: Mute children of selected folder(s)
After that, you'd just need a way to tell Reaper to unmute the FX track you want to hear and not the others. You could probably use the selected folder track as a reference for this in a custom action. So say, you want FX track 3 to be on, the custom action for that, assuming your folder track is the only track selected, would be something like this:
SWS: mute children of selected folder
SWS: Save current track selection
Track: Go to next track
Track: Go to next track
Track: Go to next track
Track: Toggle mute for selected tracks
SWS: Restore saved track selection
Another way might be to use the built in actions to mute track sends and apply this to the track which is routing your guitar to the FX tracks. You can individually mute sends 1-8. Again, these could be combined in custom actions to turn off sends 1,2 and 4, leaving only send 3 turned on.
That's how I would approach the problem anyway! :-) A good tip I was given with Reaper is always to think in terms of what the end result you want is. There's usually a way to do that even if there's isn't a way to do it exactly how you think it should be done at first.
I thought about switching sends but my brain started to ache.
I'll give the child-track thing a go but will need to figure out a way to define the track with the folder on it in the action - it's unlikely that there will be many occasions when the electric guitar input track/folder is the one that's currently selected.
my suggestion:
- rename every FX as "G1 fx_name", "G3 fx_name" etc, where GN is a group
- have an action to bypass all fx except active group, so running "activate group 1" bypass all fx except those who have "G1" in the fx name
Is there a standard/simple way to switch between multiple FX
The standard way to easily do complex Guitar setups is NI Guitar Rig. I suppose there are several more commercial and free Guitar Multi-Effect plugins.
The "standard" pure Reaper way to switch between "sounds" is using SWS LiveConfigs.
That is versatile and most easy to set up.
There are other options that e.g. support decent cross-fading. But setting up such is a lot more work.
See the "live" forum for more information.
Multiple effect chains within a single track can be done by pin routing and using the "channel router / downmixer" plugin that comes with Reaper.
The standard way to easily do complex Guitar setups is NI Guitar Rig. I suppose there are several more commercial and free Guitar Multi-Effect plugins.
You're missing the point.
Quote:
The "standard" pure Reaper way to switch between "sounds" is using SWS LiveConfigs.
That is versatile and most easy to set up.
LiveConfigs are a great idea but I've not found them easy to set up, and they're a sledgehammer/walnut thing for my request.
Quote:
Multiple effect chains within a single track can be done by pin routing and using the "channel router / downmixer" plugin that comes with Reaper.
I tried that a few months back but got overwhelmed and went with Snapshots instead.
In what way does suggesting Guitar Rig and friends miss the point ? (Same is create by NI exactly for those who use less "versatile" DAWs or don't want to dive too deep in Reaper's internal complexity for the task of combining effects.)
I don't see why either of LiveConfigs and pin routing should be "overwhelming" in any way.
It should be rather easy to remote-control the Channel Mixer (e.g.) by ReaLearn to do the selection on behalf of any (e.g. Midi) event. It should even be possible to control the channel mixer's mini-faders by Midi to allow for cross-fades (even though I think Midi Fade X might be the better choice even with multiple instances within a single track, but I did not test either option).
The clear advantage of using Snapshots over Pin routing is that it saves a lot of CPU as there are no plugins working that are not intended to be heard.
Okay, I was able to write a script for this task. How it works: when you run it, it switches to next group. If all FX are enabled or bypassed, it switches to first group. To create a group you just need to insert any fx before and rename the instance to ANY number (all groups even can have same number). The best way is to use some light JSFX, for example JS: utility/volume_pan (another its name is Volume/Pan Smoother). Here how can it look like:
Code:
local count_sel_tr = reaper.CountSelectedTracks2(0, true)
if count_sel_tr == 0 then reaper.ShowMessageBox('Select at least 1 track','',0) return 0 end
reaper.PreventUIRefresh(1)
reaper.Undo_BeginBlock2(0)
local track = reaper.GetSelectedTrack2(0, 0, true)
local fx = reaper.TrackFX_GetCount(track)
local get_first_enabled = reaper.TrackFX_GetEnabled(track,0) and 1 or 0
local same_state = 0
groups = {}
for i=0, fx-1 do
local get_enabled = reaper.TrackFX_GetEnabled(track, i) and 1 or 0
local retval, name = reaper.TrackFX_GetFXName(track, i)
if tonumber(name) then
table.insert(groups, {tonumber(name), i, nil, get_enabled})
if #groups > 1 then groups[#groups-1][3] = groups[#groups][2]-1 end
end
if get_enabled == get_first_enabled then same_state = same_state + 1 end
end
groups[1][3] = groups[2][2]-1
groups[#groups][3] = fx-1
if same_state < fx then
local switch
for k=1, #groups do
if groups[k][4] == 1 then
if k ~= #groups then switch = k+1 else switch = 1 end
break
end
end
for i=0, fx-1 do
if i >= groups[switch][2] and i <= groups[switch][3] then
reaper.TrackFX_SetEnabled(track, i, 1)
else
reaper.TrackFX_SetEnabled(track, i, 0)
end
end
undo = tostring(groups[switch][1])
elseif same_state == fx then
for i=0, fx-1 do
if i >= groups[1][2] and i <= groups[1][3] then
reaper.TrackFX_SetEnabled(track, i, 1)
else
reaper.TrackFX_SetEnabled(track, i, 0)
end
end
undo = tostring(groups[1][1])
end
reaper.Undo_EndBlock2(0, 'Switch to group '..undo, 2)
reaper.PreventUIRefresh(-1)
Or, you could save your groups as fx chains. Then throw them on the track with script(s), Probably make a bit () of a glitch when you change over though.
So best not. Probably.
I like mpl's suggestion as well, prefixing each FX name with a group identifier:
Code:
prefix = "G3"
trk = reaper.GetSelectedTrack(0,0)
for i = 0, reaper.TrackFX_GetCount(trk) -1 do
local retval, name = reaper.TrackFX_GetFXName(trk, i)
if(string.find(name, "^" .. prefix )) then
reaper.TrackFX_SetEnabled(trk, i, 1)
else
reaper.TrackFX_SetEnabled(trk, i, 0)
end
end
You'd need a script for each group, changing the prefix I suppose.
If you did it this way, you could even have the same fx in multiple groups...
(don't bind the pattern to the start of the name...)
You might need to pick the labels more carefully:
Code:
label = "G3"
trk = reaper.GetSelectedTrack(0,0)
for i = 0, reaper.TrackFX_GetCount(trk) -1 do
local retval, name = reaper.TrackFX_GetFXName(trk, i)
if(string.find(name, "[.]*" .. label )) then
reaper.TrackFX_SetEnabled(trk, i, 1)
else
reaper.TrackFX_SetEnabled(trk, i, 0)
end
end
__________________ it's meant to sound like that...
@vitalker, I wasn't saying there was anything wrong with it. Horses for courses, as they say.
Your way requires dummy, magically named fx to be added as separators, I think? The other way (per mpl) requires that the fx are renamed, With the wrinkle I suggested, it's possible for a single instance of a fx to be in more than one group. I don't know if that's useful to anyone. Probably not.
P.S. It's a real pity there's no TrackFX_SetFXName
Even better if there was a native way of doing this. I wonder if there's a FR?
__________________ it's meant to sound like that...
@vitalker, I wasn't saying there was anything wrong with it. Horses for courses, as they say.
Your way requires dummy, magically named fx to be added as separators, I think? The other way (per mpl) requires that the fx are renamed, With the wrinkle I suggested, it's possible for a single instance of a fx to be in more than one group. I don't know if that's useful to anyone. Probably not.
P.S. It's a real pity there's no TrackFX_SetFXName
Even better if there was a native way of doing this. I wonder if there's a FR?
Ah, okay.
Yes, I wrote what is required in that post. You need some dummy named with any number (even same for all groups). He wasn't specific, so maybe it works only for instances starting with G[group].
Perhaps there is FR, but I don't recall any. Also mpl created a function to rename instances using chunks. But as you probably know, chunks may be unstable and risky way.
Native? There is native. F2 or right-click the instance and rename.
Native? There is native. F2 or right-click the instance and rename.
Sorry. I meant a native way of grouping FX. There are FR for FX "containers" but that idea is overkill for this request (which I guess is a fairly common potential use case, normally solved with 3rd party stuff, snapshots, or more complicated routing)
Many years ago, I was taught that we write Set and Get functions in pairs. On the grounds that if there's a need for one, there'll (pretty much) always be a need for the other. Unless there's a strong argument against. In fact, just delivering the Get will provoke requests for the Set. So one might as well do it now, since much of the code will be common.
This is in contradiction to the "You Aren't Gonna Need It" principle. But then, like the Pirates Code, "guidelines". Also, writing APIs is different.
Anyway, The OP has an answer I hope? There's no "standard/simple way" but there are 3rd party / scripted solutions. Also, routing.
__________________ it's meant to sound like that...
I agree with the way you said about get/set. I guess if someone will create an FR, it would be implemented. Not sure about the speed though.
Yes, no native solution, but my script should work with pedal.
I'm sorry for the tone of my reply - I vented my general frustration at you, which was unfair and uncalled for.
Quote:
Originally Posted by mschnell
In what way does suggesting Guitar Rig and friends miss the point ? (Same is create by NI exactly for those who use less "versatile" DAWs or don't want to dive too deep in Reaper's internal complexity for the task of combining effects.)
I'm happy with the sounds I've got, all I'm after is a quick way to switch between them. I considered using a few instances of Carla but that would preclude using any Reaper-native FX and I'd guess it'd be a tad heavy on the resources.
Quote:
I don't see why either of LiveConfigs and pin routing should be "overwhelming" in any way.
It's a while since I tried LiveConfigs and I can't remember what befuddled me!
With the pin routing, I tried to set up something like this:
I utterly, utterly failed.
Quote:
The clear advantage of using Snapshots over Pin routing is that it saves a lot of CPU as there are no plugins working that are not intended to be heard.
I have used snapshots but they're not ideal for this as:
they can't be changed while recording (as far as I'm aware)
any edits to plug-in parameters/settings are lost when the snapshot changes.
Please read the docs about pin routing. it's really not hard.
If your effects are supposed to be stereo you set the chain to ave 6 channels an you would have e.g.
- left chain on channels 1+2
- middle chain on channels 3+4
- right chain on channeld 5+6
For all the FXes ins and outs, but the top, that have their ins all to 1+2.
Below all that you would have the Channel router / DownMixer JSX that I think is rather obvious to be configured. It is set to output the Mix to channels 1+2
Please read the docs about pin routing. it's really not hard.
If your effects are supposed to be stereo you set the chain to ave 6 channels an you would have e.g.
- left chain on channels 1+2
- middle chain on channels 3+4
- right chain on channeld 5+6
For all the FXes ins and outs, but the top, that have their ins all to 1+2.
Below all that you would have the Channel router / DownMixer JSX that I think is rather obvious to be configured. It is set to output the Mix to channels 1+2
The settings need to be saved to the snapshot / pesets.
-Michael
Exactly! That's why I'd like to be able to switch between FX Chains directly.
Quote:
Originally Posted by mschnell
Please read the docs about pin routing. it's really not hard.
If your effects are supposed to be stereo you set the chain to ave 6 channels an you would have e.g.
- left chain on channels 1+2
- middle chain on channels 3+4
- right chain on channeld 5+6
For all the FXes ins and outs, but the top, that have their ins all to 1+2.
Below all that you would have the Channel router / DownMixer JSX that I think is rather obvious to be configured. It is set to output the Mix to channels 1+2
-Michael
Ye gods, you ain't half patronising.
I appreciate your help but I really don't want to get into pin routing. All I want to do is switch between 'groups' of FX with an action. I don't see how that's possible with pin routing.
How could I activate the individual chains?
Quote:
Originally Posted by vitalker
@Primeval Mudd, didn't my script work for you?
I've not had a chance to try it yet. At the minute I'm trying to work out why a Reaper project is failing to load, apart from the times when it loads, or only loads when opened in a new tab, or loads from a backup, unless it doesn't.
You mean in the scenario with the Channel Router / Downmixer ?
I did not test this, but I suppose same can be remote-controlled by e.g. ReaLearn or directly Midi channel massage using the [param] -> Midi link ... stuff. (directly using the Reaper Control Channel by [Param] -> Learn supposedly will not work as the Channel Router does not feature a "select one of n" parameter. But there might be other plugins that might be more suitable on that behalf.)
-Michael
I've not had a chance to try it yet. At the minute I'm trying to work out why a Reaper project is failing to load, apart from the times when it loads, or only loads when opened in a new tab, or loads from a backup, unless it doesn't.
At least check the gif instead of writing so many words. What's the error?
Maybe there will be readers of this who might be willing to take a deeper look at the existing options with pin routing or LifeConfigs, who might find such explanations helpful.
I'd use Waves StudioRack (or some other container like BlueCat's one) - make those chain of plugins as presets, and switch between them with a shortcut.
Can I just say it totally worked for me! Now I just pull out my guitar, load my Guitars template (I used to have so many templates, now they are combined into one). switch between my favorite effects, cab and amp setups, and we're off.
For my dummy numbered track I created one with a gain slider, which helps level match between the various setups.
Can I just say it totally worked for me! Now I just pull out my guitar, load my Guitars template (I used to have so many templates, now they are combined into one). switch between my favorite effects, cab and amp setups, and we're off.
For my dummy numbered track I created one with a gain slider, which helps level match between the various setups.
@vitalker: I am amazed at how you are able to create scripts that address people's needs so quickly. Wow!
Just a humble note - this is what I use in these situations (not for live use, but recording). There is a JS from ixIX called 8-Channel Input Switcher. It *requires* digging into the pins, but allows selecting 1 of 8 stereo pairs. The input selector can be assigned to a CC or an envelope.
I have to dig into the pins quite often. Although it is not the most elegant UI, it is super flexible. To visualize and edit the pin setup, I use the Script: kawa_TrackFXs_Routing_Matrix_DS_KW.lua from PreaPack. Lots of discussion on it here: https://forum.cockos.com/showthread.php?t=173867