M7 Docs Using VST Plug-Ins   

MuTools apps support VST plug-ins up to VST version 2.4. Using VST plug-ins is similar as using the internal MuTools modules, though here are some specific aspects. That's what this doc page is about.

 

How to insert a VST plug-in

On OSX a VST plug-in is a shared library normally with extension ".vst". On Windows a VST plug-in is a DLL normally with extension ".dll".

There are several ways to start using a VST plug-in:

  • You can drag-drop the VST plug-in file on a rack slot or MUX Modular Area.
  • You can add VST plug-ins via the "Manage VST Plug-Ins" function.
  • Known VST plug-ins will be available in the plug-in list when you click an empty rack slot or add a module in the MUX Modular Area. And if the plug-in you want to use is not yet listed there then choose "Browse For VST Plug-in..." in that popup list.

 

About VST inputs and outputs

A VST plug-in can have multiple audio inputs and outputs. Each VST audio input and output jack is mono, that's how VST is organized. But there is a VST function where the plug-in can tell the host how its inputs and outputs are practically organized. If a VST plug-in has, for example, 2 output jacks and it reports to the host that they're the left and right jack of a single stereo signal, then MUX Modular will present these 2 VST jacks as a single stereo jack, as that's what the plug-in suggests. MUX Modular still offers you a way to override that by using a Stereo Splitter or Stereo Combiner, so, continuing the above example, if you want to have 2 separate mono outputs for that VST plug-in, you can use a Stereo Splitter module.

If there are VST plug-ins for which you would want a more permanent reorganisation of its audio inputs and outputs, then you can use the ReGroupAudioInputs and ReGroupAudioOutputs preferences in the VstPlugins.xml file. More details on the Preferences doc page.

 

Using multiple inputs and outputs

When inserting a VST plug-in into a rack, you don't immediately see the extra inputs/outputs of a VST plug-in. If you want to have control over these auxiliary inputs/outputs there are 3 options:

  • Insert a MUX in that rack and then insert the VST in that MUX. Then in that MUX's modular area you'll see all the inputs/outputs of the VST and you have all creative freedom to use them as you want. Also note that another advantage of working this way is that you can save this MUX as a preset that can be re-used in other projects, for example you can make VST presets that include a complete sub-mix setup!
  • Right-click the VST plug-in in the rack slot and choose "Setup Aux Ins/Outs". Then you can choose which auxiliary inputs/outputs should be imported/exported from the rack. When that's done the rack will have the extra inputs/outputs that directly represent the auxiliary VST inputs/outputs. Then go to the modular area containing that rack and there you can connect things as you want. If you want certain VST plug-ins to always import/export certain auxiliary inputs/outputs whenever it's plugged in, you can define this in the VST Plug-In Manager -> right-click the VST plug-in -> Edit Extra Options. This avoids having to do "Setup Aux Ins/Outs" again and again if you want that to be default behavior.
  • Insert the VST in the project's modular area and connect things as you want, similar to the first option, but here you can also add racks to the VST outputs and so these racks will also show up in the rack mixing desk.

 

Auto Bypass

Using the Auto Bypass function you can avoid wasting precious CPU cycles by temporarily bypassing VST plug-ins that are only processing silence. It means that if the VST plug-in is not receiving any input nor generating any output for some time then the VST plug-in is bypassed so that it does not consume CPU. As soon as the VST plug-in receives input again, the auto bypass is switched off and the plug-in processes the input, so nothing lost, only CPU gain. This works for both VST effects and synths!

The Auto Bypass can be setup via the VST plug-in's context menu. The value is the number of milliseconds that the output must be silent before the Auto Bypass is switched on. By default it's set to "Off", but by setting the "Auto Bypass Threshold" to eg 500 ms then the auto bypass will be switched on as soon as the plug-in's output is silent for 500 ms and the plug-in does not receive any new input. Of course it depends from plug-in to plug-in, and even from patch to patch what threshold value is best. Just as an example: A filter plug-in may be ok with a threshold of 10 ms, but a delay plug-in will need a threshold that is at least as long as the delay time.

When the Auto Bypass function is enabled and it is effectively switched on (thus bypassing silence) the power LED for that VST plug-in is dimmed, indicating that the plug-in is still active but auto-bypassed. That way you can clearly see the Auto Bypass function in action.

Note that if a VST plugin constantly sends out a very low level noise so to avoid denormalization, and that noise is above -379 dB then the auto bypass feature cannot be used for such VST as it produces audio above the smart bypass threshold level for detecting audio.

 

Focused VST Parameter Control

At the top of each VST editor, at the right of the Open/Save and Options buttons, there is a parameter knob that reflects the last tweaked VST parameter. Whenever you tweak a VST parameter that focused parameter control switches to that last tweaked parameter. This focused parameter control is a handy bridge between any VST parameter and the MuTools user interface. For example you can easily drag-drop the name of that focused parameter control onto the [+] track button to create an automation track, or to insert a point for that parameter value into an automation envelope editor, etc. You can also right-click the focused parameter control for handy functions like Copy As Parameter Event, Copy As Envelope Point, Map MIDI Controller, etc. It can also be used to monitor the value of VST parameters for VST's that don't show this in their own editor. It can also be used to copy-paste VST parameter values even in VST editors that don't support such functionality. Etc.

 

How To Automate A VST Parameter

  • Open the VST plug-in editor.
  • Give a little tweak to the parameter you want to automate. This will switch the focused parameter control to that parameter.
  • Drag-drop the name of that focused parameter control onto the [+] track button in the composer.

Alternatively, if you already have a track for that VST plug-in, right-click the track and choose "Add Automation Sub-Track".

 

How To MIDI Control A VST Parameter

  • Open the VST plug-in editor.
  • Give a little tweak to the parameter you want to control.
  • Open the plug-in context menu via the Options button at the top of the editor.
  • Choose "Map MIDI Controller". You'll see that the last tweaked parameter is already selected; but you can also choose another one if you want.
  • Move your preferred MIDI controller or select it manually from the list.

 

32 bit and 64 bit

OSX and Windows do not allow loading 32 bit plug-ins into 64 bit hosts and vice versa. So make sure the VST plug-ins you want to use have the same bit-depth as the host (MuLab/MUX Modular) you're using. If such version does not exist for a specific VST plug-in then you could try jBridge.

 

About Keyboard Focus

Generally operating systems send key presses to the focused control in the focused window. When that control does not handle that key press it should forward it to the next keyboard handler, eg. its parent control. If all controls properly follow this rule, all will work fine as the user can indicate which control must have keyboard focus.

But when using VST plug-ins it occurs that the VST plug-in editor does not properly forward unhandled keyboard events and this may result in, for example, that while the keyboard focus is on the plug-in editor, pressing the spacebar does not start/stop the main Play function. And besides that, there also is a non-comformity in Microsoft Windows: When a child window (the very VST editor) does report that a key press is unused and hence it gives the key message to DefWindowProc, Windows does not forward it to the parent window. That's a serious shortcoming in the Windows system. MuLab cannot do much about these cases except for this workaround: When you click the top control bar of a VST editor (thus in the MuTools GUI area) this will shift the GUI focus to the window's top level and hence key presses will be processed by MuLab. So that way you can quickly force a GUI focus shift to the MuLab GUI and hence eg pressing the spacebar will start/stop playing the composition.

Request to Windows VST plug-in developers:
To workaround that shortcoming in Windows OS, please do this in your VST editor's window message function (pseudo code):

case WM_KEYDOWN:
case WM_KEYUP:
if (ProcessKey(Msg,wParam,lParam)) { // ProcessKey() forwards it to the relevant control in your UI and when they key is handled = consumed, it returns true
    return(0);
}
else {
    host_hwnd=(HWND)AEffEditor->systemWindow;
    return(CallWindowProc((WNDPROC)GetWindowLongPtr(host_hwnd,GWLP_WNDPROC),host_hwnd,Msg,wParam,lParam));
}

Using the above code (ie. the 'else' section) not only the unprocessed key messages in the main VST editor window are properly forwarded to the host window, even unprocessed key messages of separate plugin windows (if any) are forwarded to the host window. That's a double advantage.

 

Extra Notes

  • A VST plug-in is a dynamic library file, on Windows called a DLL file, on OSX called a bundle. Now when scanning VST plug-ins, it may be that also other DLL/bundle files are detected and scanned to see if they're VST plug-ins. In case a DLL/bundle is not a VST plug-in the scan log will include a message that says "Couldn't find main vst function" which means that that DLL could not be recognized as a VST plug-in. That's a normal message and added for your information.
  • Input and output names for stereo jacks are displayed in a simplified form, for example if the VST plug-in reports that the output names for a stereo output are "Output 1" and "Output 2" then the tooltip for that output wil say "Output 1+2".
  • You can categorize your VST plug-ins into groups (eg. "VA Synths", "Samplers", "EQ & Filters", "Reverbs", ...) using the "Group" column in the VST Plug-In Manager.
  • VST shell plug-ins are not yet supported. But you can try this workaround: Shell2Vst
  • You can drag-drop an FXB/FXP file on the top control bar of a VST editor, that will load that FXB/FXP file into that VST.
  • You can drag-drop an FXB/FXP file on the top control bar of a VST editor, that will load that FXB/FXP file into that VST.

Table Of Contents