How to Use the Knobs to Control Multiple Patch Functions

From Patchblocks
Jump to: navigation, search

Although the Patchblocks have only 2 knobs, you can use them to control more than 2 parameters. There are several methods.

Using the built-in blocks[edit]

It's possible to control 16 parameters with the built in blocks, but a little bit complex. The setup centers around the Distribute block. Each I/O pair of the Distribute block will represent one of the parameters. By selecting one of the pairs, the knob's output will be routed to that parameter.

Unfortunately, when the Distribute block changes position, it does not store the value of the last position. Instead, the last position reverts to the default value configured in the block. We need some memory to store parameter values that are not currently selected.

The built-in block SampleHold can store values. If we route an output of the Distribute block to a SampleHold block, then route the output of the SampleHold block to the Default Value for the parameter, we can store the current value even after the selection changes.


It's not possible to create a feedback loop in the Editor with just wires. So we can't just connect Distribute:Output1 -> In:SampleHold:Out -> Distribute:Default1. The patch will not function and will in fact crash.


Instead, we will need to use the Send and Receive blocks. These blocks can create the feedback loop that we need.


Keep in mind that the Send and Receive blocks have a Bus Number parameter. Each parameter must reside on its own bus. There are only 16 busses (numbered 0-15), so this solution will only support 16 parameters.


To make our SampleHold block store a value, we need to send a pulse to its Trigger In when we want the value to change. If you want the knobs to always be "live" to the currently selected parameter, you can connect an Impulse generator block to the SampleHold's Trigger In. This will cause the SampleHold's value to update at the frequency of the generator. As this does not need to occur very often, you should set the Impulse block to Control Rate, and set the frequency to, say, 20Hz. This will cause the sampled value to update 20 times per second.

If you would like the value to update only when you click a button, wire that button to the Trigger In port. Then the sampled value will update once per click.

To get an effect where the value updates when the button is held down, use a AND block to combine the output of an Impulse generator with the button. That way, you get updates at the rate of the generator only while the button is held.


Parameter Output[edit]

To connect your parameter value to a parameter you want to control, there are a couple of options:

  • Split the output of the SampleHold or Distribute blocks
  • Use another Receive block configured for the bus that holds the parameter value
One Parameter Example[edit]


8 Parameter, 1 Knob Example[edit]

In this example, the left button advances through a sequence with all parameter numbers (0-7) which selects the distribute port.


Using User-Created Blocks[edit]

There are several user-created blocks that can help map multiple parameters to a single knob.

  • 8 Parameter Catch (Lofi)
    • This block has 2 knob inputs and 8 outputs allowing for 4 "pages" of 2 parameters.
    • The block will wait for the user to sweep past the current value in order to "catch" and begin updating.
  • 8 Parameter Latch (Lofi)
    • Same as the above, except it will update immediately when the page changes.
  • Knob Expander V1
    • Like the above Latch, but only 2 pages.