Controlling Procedural and Physical Modelling Plug-Ins

QLab Turbine Screenshot

Control Resolution

A common way of controlling parameters in Plug-ins is with MIDI cc controllers. These are generally 7-bit controllers with 128 steps between minimum and maximum. That’s not many more than the keys on a full-size piano. We may be able to predict what will happen when we try to control something that has a much wider frequency range than a piano.

(All videos in this tutorial are best viewed full screen)

We can clearly hear the almost semitone steps as the controller moves from one value to the next. Clearly, 7-bit control isn’t going to work for most of the parameters of this plug-in. We need a resolution an order of magnitude higher, so need to find a way to use a 14-bit controller. The most common MIDI 14-bit controller is the pitch bend control with over 16000 steps (-8192 to +8191), We’ll only use the 0-8191 values which should give us very fine control. In a lot of plug-in hosts, only cc controllers can be used and there are 127 of them. We, therefore, need to find a way to use pitch bend controllers and to use as many of them as we want so we can have all parameters controlled by 14-bit MIDI.

QLab sends the MIDI data to Turbine using IAC (inter-application communication) busses.


If you can’t see these, or want to add some more, they are in the MIDI Studio window of AudioMidi Setup.


Check the IAC device is online and add as many ports as you need. Each IAC port will allow 16 pitch bend controllers, 1 for each channel.

We are now going to work within Plogue Bidule. This uses simple building blocks with input and output ports which can be interconnected to form more complex processing units.


In Plogue Bidule we can only directly patch, or learn, standard 7-bit cc controllers, so we need to extract the pitch information, by channel, from the incoming MIDI stream, using some bidule blocks.

Pitch Bend extract

At the top, the MIDI data comes into the Bidule on  MIDI Device MIDI IN IAC Bus 1

A MIDI splitter named SPLIT BY CHANNEL splits messages according to their channel

Pitch Bend extractors on each of the channel splits pass the pitch bend values to Parameter Modulators which are set to convert the incoming 0-8191 integer values to floats between  0.0 and 1.0 to control Turbine parameters.

These are patched on the parameters page.


We can repeat these steps to patch pitch bend controllers on other channels to control other parameters. There are 6 such patches in the example.

We are now using thousands of steps instead of the 30 in the MIDI cc 7-bit example, and can achieve very smooth transitions: