Contents



Wiring Considerations

Next
 

It will be much easier to manage your control information with DH_ControlOverlay if you plan for this as you are wiring your synth or effect. This way, you can set up connections from your controls to a central location where you can label and number them as you work. This will help you to keep things organized, especially on a complex project with many controls. Another consideration is that all of the control information coming into the DH_ControlOverlay module must be in the form of voltages, so some conversions will have to be set up for list controls and some of the sub-controls.

Build a Central Control Point as You Go

Here's a handy way to keep track of your control inputs and bring them all together in one place. Insert a container at the place in the structure where you will eventually put the DH_ControlOverlay module. As you insert and wire up each control, also run a wire to the next "spare" input on the container.



Open the container's structure window, go to the IO Mod's Properties, and label the input with a number and the control's name. Then, inside the container's structure, connect the input to the next "spare" pin to create a connected output with the same label.

 

Do this for every control when you add it. Then, when the time comes to add the DH_ControlOverlay module, all of your control inputs will be right there and conveniently labeled.

 

 

Wiring Numeric Controls

Although DH_ControlOverlay supports both Numeric and List controls, it only accepts voltages as value inputs. By the end of this tutorial section, you will see that this is not really a limitation.

The older slider and knobs can be connected directly. You may want to scale the values for display purposes using math or conversion modules. The voltages input into the DH_ControlOverlay module need not be in the 0 to 10 volt range. If you want to display a filter cutoff frequency of 1200 Hz, or a level of -40 dB, that's fine.

The Float type values from the newer sub-controls can be converted to voltage using SynthEdit's Patch Mem - Float and Float to Volts modules. Again scaling can be applied as needed or appropriate.

 

 

Wiring List Controls

The key to using List type controls with DH_ControlOverlay is extracting the index number of the selected item. This is used to select items from a text file that you create for the control.

The DH_IndexExtractor module can be used to get the index of the selected items from the older List Entry type controls, while the DH_ListExtractor performs the same function for the new list sub-controls.
 


Using Continuous Sub-Controls with Lists

Continuous sub-controls, such as animated bitmaps, can be used to select from lists by scaling the values to the size of the list, and quantizing them to integer values.

The bitmap image's Animation Position outputs a value ranging from 0 to 1.0 as the image is dragged. With its default settings, the Patch Mem - Float scales this to a range of 0 to 10.

 

To use the bitmap to select from a list, we need integers ranging from 0 to one less than the number of list items. For the standard SynthEdit oscillator's waveforms, that's 0 to 6.

We can adjust the range to what we need by going into the Patch Mem - Float's Properties and setting the Max Value to 6.
 

 


Next, we'll take advantage of the fact that the DH_ListExtractor also works in reverse: changing the Index pin changes the list selection. So, we connect the Patch Mem - Float's  Value pin (blue-background) to the DH_ListExtractor's Index pin. We can then connect the oscillator's Waveform selection pin to the DH_ListExtractor, through a Patch Mem - List 2 module.

Now, when we drag the waveform image, it changes the oscillator's selected waveform. There are 2 problems, however:

  1. If we hook up a scope to the oscillator's output, we'll see that the oscillator's waveform doesn't change exactly when the image frame changes.
     
  2. Although this wouldn't become apparent until we hooked up the DH_ControlOverlay and provided a file with the list items, the list item changes will also be out of sync with the bitmap's frames.


When we drag across the bitmap image, it sends a continuously changing value. Although we have scaled it to the range of 0 to 6, which is correct for this list, we have no control over exactly how floating point values are being converted to integers. Are they being rounded (1.7 becomes 2)? truncated ( 1.7 becomes 1)? Apparently, at least one of our modules is using a different method than the others, and this accounts for the synchronization problem.

What we can do is to take matters into our own hands and do the quantization ourselves, so that we know that it will be done consistently. The SynthEdit Quantizer module will take care of the Float to Volts output that will be going to our DH_ControlOverlay connection, and its default step size of 1 is exactly what we need. To quantize the Float values going into the DH_ListExtractor's Index pin, a DH_FloatQuantizer does the trick. (It will work in either direction, by the way.)


So, the DH_ControlOverlay can be used with virtually any SynthEdit control or sub-control. Some of the sub-control hookups shown above may appear to be a bit complex, but that is mostly because of the sub-control system itself, and its tremendous flexibility. The actual conversion of the control values or selections to voltages, for use by DH_ControlOverlay, turns out to be pretty simple.

top

Next