bramdebouvere / fltouch

FL Studio MIDI controller scripts for the Behringer X-Touch + extenders (MCU)
The Unlicense
11 stars 4 forks source link

Enhancement - Update the "FREE" page to control plugins. #14

Open jsantoru opened 2 years ago

jsantoru commented 2 years ago

Suggestion / idea: taking the "FREE" page and making this work with some basic plugins (reverb, compression).

I tried manually linking the sliders and knobs in Fruity Reverb 2 to the controller and it worked... except that it was tied to that specific instance (the fruity reverb 2 thats on the track). if i change tracks and open another fruity reverb 2, it still just changes the values in the original / first instance of the plugin.

ideally we could use 16 faders, knobs and buttons to control a few common plugins. so the workflow would be to turn a plugin on or off on the "PLUGIN" page, then go to the FREE (INST on the controller) page, and tweak plugin settings for the selected track.

thoughts? is there a better way? maybe handle it all on the plugins page?

@bramdebouvere any thoughts on how to make this work? i don't mind taking a stab if you could point me in the right direction as a starting point

bramdebouvere commented 2 years ago

Instead of "link to controller" you have to use "override global link" to make it work when you switch to another instance of the effect. I have already been working on automatically showing the plugin values on the faders/encoders for this as well, but I had some weird bugs at times when working with the remoteFindEventValue() function.

So I decided to first work on refactoring the scripts a bit, so I can have a clearer picture of what was going on.

These are the changes I did last time:

in on refresh:

            if flags & midi.HW_Dirty_RemoteLinkValues:
                print('dirty remote link values!')
                for n in range(0, len(self.ColT)):
                    self.UpdateCol(n)

in updatecol:

                    d = mixer.remoteFindEventValue(baseID + int(self.ColT[Num].TrackNum) * 8 + 7, 1)
                    m = 0
                    if d >= 0:
                        m = min(round(d * 16384), 16384)
                    else:

I'm still not finished refactoring, so I haven't really continued trying to make this work properly. However, input should already be working when you use the "override global link".

I'd also like to make some stuff possible with the Effects tab (I would love some automatically assigned values), but I'm still thinking about how I'll tackle this (and I would also first like to finish some of the refactoring).

Sorry if development is a little slow, I'm also doing this in my very limited free time :)