Guide: Mapping Knobs & Faders to 3rd-Party Plugin Parameters (FL Studio)

Hi everyone,

I’ve been digging through the FL Studio integration script because I wanted to change the behavior of my Minilab 3. I found some parts of the code that you can relatively easily and safely edit. Some basic python knowledge is required though.

In this post, I want to go through mapping 3rd party plug-in parameters.
When you open a native Image-Line instruments (for example FLEX), you will notice that Minilab’s knobs and faders are automatically linked to some parameters of the plugin. For example, in FLEX, Knob 1 is linked to Master Filter Cutoff when that instance of FLEX is in focus.

Well we can add our custom mappings for non-native plug-ins. So let’s go.

If you installed the FL Studio integration script, you will find all the code here: C:\Users<username>\Documents\Image-Line\FL Studio\Settings\Hardware\MiniLab 3
I’m on Windows 11, so maybe on some other OS’s the location will be different.

In that folder, you will find a file called MiniLab3Plugin.py. This is where you can add custom mapping for third party plug-ins. In this script, there is a function called Plugin. Within this function there is an if-else statement where knobs are mapped to parameters of different plugins. The statement starts like this:

if plugin_name == 'FLEX' :
    recognized_plugin = True
    ## FLEX ##

    PARAM_MAP = {
            '14':10,
            '15':11,
            '30':12,
            '31':13,
            '86':21,
            '87':22,
            '89':25,
            '90':30,
            '110':0,
            '111':2,
            '116':3,
            '117':4,
            '1':-1
            }

And ends with:

else :
    
    PARAM_MAP = {
            '14':-1,
            '15':-1,
            '30':-1,
            '31':-1,
            '86':-1,
            '87':-1,
            '89':-1,
            '90':-1,
            '110':-1,
            '111':-1,
            '116':-1,
            '117':-1,
            '1':-1
            }

In between there are many elif statements and you can add your own.

Parameters 14, 15, 30, 31 correspond to Faders 1, 2, 3, 4.
Parameters 86, 87, 89, 90, 110, 111, 116, 117 correspond to Knobs 1 through 8 in that order.
I’m not sure what parameter ‘1’ does, so don’t touch it.

So for example, since Serum 2 is the hottest thing in town right now, here is an elif statement I added to map some of it’s parameters:

elif plugin_name == 'Serum 2' :
    recognized_plugin = True
    ## Serum 2 ##

    PARAM_MAP = {
            '14':205, # Fader 1 : Filter 1 Frequency
            '15':206, # Fader 2 : Filter 1 Resonance
            '30':216, # Fader 3 : Filter 2 Frequency
            '31':217, # Fader 4 : Filter 2 Resonance
            '86':440, # Knob 1 : Macro 1
            '87':441, # Knob 2 : Macro 2
            '89':442, # Knob 3 : Macro 3
            '90':443, # Knob 4 : Macro 4
            '110':444, # Knob 5 : Macro 5
            '111':445, # Knob 6 : Macro 6
            '116':446, # Knob 7 : Macro 7
            '117':447, # Knob 8 : Macro 8
            '1':-1 
            }

So let’s say you added this elif statement in between the last elif statement and the else statement and saved the changes in the file.

Now, when in FL Studio, and Minilab 3 recognizes that an instance of plugin named ‘Serum 2’ is in focus, it will automatically map those parameters. As soon as you close Serum 2, those parameters will no longer be mapped.

You might wonder at this moment, how do I know 205 corresponds to Filter 1 Frequency in Serum 2. You could trial and error this but that is going to take way too much of your time, as Serum 2 has over 500 parameters. Luckily, Steinberg has blessed us with some sort of a debugging tool for VST’s, which allows you to extract that information.

So let’s go through this process now:

  1. Go to: 3rd-Party Developers Support & SDKs | Steinberg
  2. Download the VST 3 Audio Plug-Ins SDK .zip file.
  3. Export files from the .zip.
  4. Within the extracted files, go to VST_SDK\vst3sdk\bin\Windows_x64\
  5. Inside you will find another .zip file named something like VST3PluginTestHost.
  6. Inside, you will find the VST3PluginTestHost installation.
  7. Install and run the VST Test Host. It will take a while to scan all your VST’s.
  8. Once it opens, go to View > Open Plug-in Unit Test Window.
  9. In the left panel, navigate to: Global Instance > Serum 2 > Global Instance > VST3 Conformity > General > Scan Parameters.
  10. With ‘Scan Parameters’ selected, in the right panel, press the Run Selected button.
  11. In the bottom panel, you will get a list of all parameters numbers and names.

Repeat this process with any other plugin. Happy exploring. :slight_smile:

In the next post, I will be describing how to change the script so that Fader 1 and Fader 4 are no longer mapped to current channel Volume and Panning. Something I find really annoying.

I’d like to take this opportunity to invite others who have experience in python to explore the scripts. And also I’m inviting developers of the script to write more comments in their code :slight_smile:

Okay, I didn’t expect this post to be so long, but here we are. If you have any questions, let me know, I would be happy to help.

Thanks,
Tobago

P.S. If you are wondering how I have had time to figured this out, well, a girl I’ve been seeing for a while has dumped me, so this has been a fantastic distraction haha, okay