Stuck with a SynthEdit project?

Category: Sub Controls (Page 1 of 3)

Image 2 sub control.

This module is one of the essential foundation blocks of any Sub-Control we would wish to make. It can be used to take an image or a series of frames of an image and use them to make a control such as a slider, a knob, an LED/Lamp, a push button, an indicator, a meter or a switch.
The only downside is that the images that can be used being .bmp or .png they are not rescalable. For images to be rescalable they need to be vector of SVG garphics, which are not usable with this module.

The Image 2 module plugs.

Animation Position:- Selects which frame to display, the value of this is normalized between zero and one. Allows for for animating the image, and for generating a control value from this movement.
Filename:- Enter the filename of the image (.bmp or .png).
Hint: – This text displays as popup yellow tooltip when the mouse hovers over the image. Note: The Hint pin only works for clickable images. So to make the popup hint work for a rotary control, you need to create a basic text file containing – “mouse_response click”, and save it in the default skin folder (you could call it mouse.txt-the name isn’t important though).
Menu Items/Menu Selection – Provides a right-click popup context menu for the image. This is commonly used for adding a MIDI-Learn menu.
Mouse Down:- Provides a bool “True” signal whenever the mouse is clicked on the image, for the duration of the “click”.
Frame Count – Outputs the total number of frames in the image. Used by the Image-To-Frame module.

Properties panel.

Properties panel for Image2

Mouse response allows you to choose how the control interacts with the user:
Off- Disabled, no interaction. Hint popup is not available in this mode.
Auto- Responds to vertical, horizonal step and rotary modes of operation. The hint popup operates in this mode.
Vertical- Only responds to vertical mouse movement. Hint popup is not automatic in this mode.
Horizontal- Only responds to horizontal mouse movement. Hint popup is not automatic in this mode.
Clicks- Responds to a mouse down event on the the control. The control goes to the 1 position. A button is non-latching in this mode.
Rotary- Responds like a rotary control. Hint popup is not automatic in this mode.
Step- A rotary control moves in steps of 0.1. A button latches in the on or off position when clicked (depending on it’s current state).

The stock SynthEdit image files.

The file names are shown in brackets after the module name.
By deafult these images are located in (For Windows, Not being a MAC user I don’t know their default location) C:\Users\Public\Documents\SynthEdit Projects\skins\default2.

How the image file is animated.

The Bitmap Image sub-control lets you use multiple-frame .bmp or .png images as controls. You have used them and seen them in action but here is a basic overview of what you need to know (as far as a non-programmer).

This image is made up of 40 images known as “frames”, which means the animation runs very smoothly. In the skins default folder there is a text file referenced by the Moog control knob, this is the moog_knob.txt file, and this is what it contains:
moog_knob.txt
type animated (Tells Image2 that the control is meant to move)
frame_size 48, 45 (The size of the image file in pixels)
mouse_response rotary (The control rotates)
padding 13, 7, 13, 4 (The amount of space (padding) to allow round the knob.
As the image rotates the position of the knob image is converted to a float value. In the structure in figure below, a PatchMemory Float3 and a Float to Volts converter convert the image’s Animation Position to a voltage output.
Any multi-frame image can be used in this way to create visual controls such as buttons, switches, knobs and sliders.

Using the “Moog” Knob.

The two Image2 modules are linked so that the shiny cap will rotate with the knob. Animation position is also fed to the PatchMemory Float3 module, and converted to a DSP signal> this is converted from Float to Volts, any steps or jerkiness is smoothed out, and output at the IO module.
Hint: Make sure that both Image2 modules have their Mouse Response properties set the same, otherwise the two different rotations can look a little odd.
Hint: Sometimes you will want this control to send information to another GUI external module or prefab. In this case always make a connection from either the Animation position or GUI Value plugs on the IO Module. Don’t waste resources by converting the DSP Voltage back to GUI Float again.
Hint: When you connect up a Text Entry module for a label for the control it’s a good move to connect the Text input to an IO module (you won’t have to keep opening up the module to change the label, unlike the stock Moog knob prefab).

Creating a slider control.

This uses the vslider_med.png image, and the vslider_med.txt information file the contents of which are shown below;
type slider
frame_size 28, 40
handle_rect 4, 41, 28, 55
handle_range 1, 26
orientation vertical

For this control you can leave the mouse response setting as Auto- we don’t want to change this.

Creating a Button type switch control.

Here the image of a button has just two “frames”, for it’s “on” and “off” states.
Click on the ellipsis by the filename box in the properties and find the button.bmp file, and load it into the module.
The text file associated is quite simple, and needs no alteration.
type animated
frame_size 18, 30
mouse_response click
.
To change the mouse response for our prefab, you can do this from the Image2 properties, go to the MouseResponse List. Auto or Clicks will give you a momentary switch, Step a latching switch. Vertical, Horizontal or Rotary will work, and give you a Latching button, but I would really discourage doing this as it’s going to confuse your VST’s users.

Or you can use button_sm.png

Creating your own On/Off Switch.

The same principles apply to creating your own on/off switch.
Click on the ellipsis by the filename box in the properties and find the switch.png file, and load it into the module.

Image filename selector

This is the switch.txt file associated with it (I’m just showing you this for reference)- SynthEdit automatically reads this file.
; medium vertical slider
type animated
orientation vert
frame_size 25, 26
; extra space at: top, bottom, left, right
padding 5, 2, 5, 3
mouse_response stepped

You can see it’s quite different (the lines with the semi-colons are just comments-not read or used by SE) from the moog_knob file. For a start the orientation is vertical, not a rotary control, and that extra line at the end mouse-response stepped means that when you click on the control it stays in it’s new state until you click on it again.
In this application the Animation position does not change value gradually with control position, it has just an on and an off state, with a float value of 1=on, and 0=off.
The observant among you will notice I have connected the LED prefab directly to the Animation Position…but the LED prefab has a DSP Plug. I took out the conversion modules and connected directly to the Image2 module in the LED prefab (saving on un-ncessary DSP-GUI conversions). So we now have a switch with a label and on/off LED indicator.

Hint: So you need a non-latching (momentary) switch?
Thats easily done, click on the Image2, and in the properties panel click on the Mouse Response list, and change from Auto, to Clicks. Now your switch won’t stay in the same position, it will “flip” back to it’s default off position.

Hint: If you leave the Mouse Response as Auto then it will use the setting in the associated text file. If you select anything but Auto from the list, this will over-ride the setting in the text file.

Mouse response settings

Small Illuminated Push-Button.

A simple little prefab that gives a small circular illuminating push button switch. Look for the image file Led.png in the ususal way, and select either clicks for a momentary switch action, or step for a toggled (locking) button.

Joystick control using DAM modules.

How to create a “roll your own” customizable Joystick control prefab.

Note: This relies heavily on third party modules:
Davidson’s DAM modules;
DAM V XYo Circle,
DAM Rectangle.
Elena’s ED GUI Modules;
ED GUI Fixed In,
ED GUI Fixed Float,
ED GUI Timer.

Once again I’m going to stress that you should never convert from a GUI signal to DSP, perform a math or timing function, then convert this back to a GUI signal. It’s very wasteful on CPU resources, and can cause many problems.

GUI Container for the Joystick.

The Joystick control iteslf uses the DAM V XYo Circle module. This resturns the position of the circle, which can be extensively customized. Here I have pre-set it with a red theme. In the interests of simplicity I’m just connecting the following plugs to the IO Module;
1) Animation Position- The output value of this plug is 0 till the circle receives a click (Mouse Down), it then changes to 10.
2) Position X- The X co-ordinate (horizontal) of the circle (Normalized value of 0-1)
3) Position Y- The Y co-ordinate (vertical) of the circle (Normalized value of 0-1)
4) Circle Size- The size in px of the circle.

The settings in the properties panel are shown below. Make sure the Jump Back Position List is set as “None”, the Mouse Response is set to “Click”, and The Gradient Lock check boxes are ticked. These are the colour settings I used, but as always that’s your personal choice.
Mouse response- This selects various modes, the main ones are;
None- Nothing happens when you click on the circle, and it’s locked in position.
Click- Click on the circle and the Animation Position changes to 10, the circle assumes its “Alt” colour scheme, and can be moved.
Step- Click on the circle and the Animation Position changes to 10, the circle assumes its “Alt” colour scheme and the circle can be moved. The Animation Position value and “Alt” colours are held until a second mouse click is received.

Settings for the DAMV XYo Circle and DAM Rectangle modules.

I have shown these settings as screenshots.

The control section.

The x and y output values are passed as usual to PatchMemory Float3 modules. These then send the Float values to the output IO module as GUI Float, DSP Float and Volts. The Volts as usual is converted by the stock Float to Volts module.
Returning the Joystick to the centre position.
This is done with a pair of Spring 3 modules to send a value of 0.5 to the Position X and Position Y plugs. The ED GUI Timer is used to send a short (10 mS) pulse to the Spring 3 modules when the Centre On/Off plug is set to true. (I found that the Joystick wasn’t reliably setting to the centre when switched on otherwise).
Setting the Joystick’s output ranges.
As usual the ranges of the output values can be specified via the Patch Memories. To make this easier I recommend changing the Patch Memory names in the Properties panel to something like x-axis range, and y-axis range.

X and Y Value (GUI) containers.

These are just standard Float to Text conversion, both connected to the Value output of the PatchMemories to show the actual value being output by the joystick, rather than the Animation Position.

The control panel view.

Resetting unlinked controls from a single button.

How is it possible to reset three controls from a single button? If we try to link the controls in any way to send a reset value to them from a single source, being Bi-Directional we have immediately linked the controls. There is also the issue that many modules using Animation Position will only allow you to connect one input per module, fortunately the PatchMemory Float3 does allow this, but you still can’t can’t connect all the Controls like this without linking them
The answer is to “chain” a number of Spring3 modules, one for each control to be reset.
Note: This does not work on the stock controls in the Controls folder, we can only do this by making our own custom knobs or sliders. This must be done (as always) with all GUI modules.

Tip: Give each of the PatchMemory Float3 modules a useful name in the properties, so if you want to adjust the range of the control you know which one you’re adjusting.
Note: Changing the range of a control does not affect the Animation Position range. This range is always 0 to 1.

Having the Mouse down output plug on the left side of the Spring3 modules allows for easy chaining of these modules.
Being an Animation Position value, the range for the value is 0 to 1. with 0.5 giving a centre position.

Each knob is contstructed as follows, yes, thats’s correct, at this stage there is no patch Memory. This is outside of the control’s container. Two PatchMemories for one control can quickly become a confusing mess.

The structure of the reset button

Improving the Patch Point modules.

The problem with Patch Points.

The existing Patch Point modules are fine, but a little basic. If you’re setting up a panel with a large number of patches you need to be very disciplined about labelling and arranging them. As I have found it’s too easy to get in a muddle. As you see below we can start with a nicely laid out pattern of patch points, switch to the panel view…and it’s chaos, and you have to select ech one, then switch to panel view and arrange everything. With some labelling the problem is solved, you can just arrange your panel view in one go.

Making life easier.

What would help is a text label and maybe some colour coding. We can do this fairly easily with a few sub controls. With a little planning we can produce a Patch Bay something like this… even having a few useful things like gain controls and inverters in the patch bay.
Note: I’m sorry but the colours are limited to the patch points, there’s no way round this until Jeff introduces (please, please do this Jeff) colour customizable patch leads for the Patch Points. Also the transparency can’t be altered either. Patch cables are only fully visible when you hover the mouse over the patch point.
Note: You can plug more than one cable into a Patch Point.
Note: To disconnect a cable, right click on the Patch Point itself.

How the patch points are customized.

Not much to say about this really, this is just to point you in the direction of your own style of Patch Points and patch bay.
Note: Do pay attention to the Z-order of the modules, otherwise you can end up with a hidden lable or Patch Point! From top layer down you want this order;
1) Patch Point
2) Text
3) The rectangle.

A Patch Point for connection to the Output of a module.

The plugs on the prefab are for controlling the appearance. (Apart from the input/output signals of course).
Text: The is the lable next to the patch point
Text ARGB: the ARGB colour settings for the label text
Back ARGB: The ARGB Colour settings for the background of the text. You’ll most likely want to leave this as 00000000 (Transparent background)
Control ARGB: The ARGB colour settings for the Rectangle used as the Patch Point background. Note: If you want rounded corners just go into the properties settings on the panel and adjust them.

Inside the Text container.
This is containerized just to make the structure on this article a little easier to read

A Patch point for connection to the input of a module.

An Inverter patch point, and a gain control patch point.
Just for ideas, really all sorts of patch points are possible from now on.

Switching control panels

Using a drop down list to select between different control panels.

Using some simple logic , and SynthEdit’s ability to make the control panel of a container visible or hidden, we can easily switch between a variety of different control panels. Using this you could swap between say;
1) a standard oscillator,
2) A Supersaw oscillator,
3) A Casio CZ style phase distortion oscillator,
4) A Sample Oscillator.

The Selector logic.

The Popup Menu module should have the following entered into it’s Item List box in the poperties panel 1,2,3,4 (No full stop or comma at the end of the list.) This value is selected from the popup menu, and sent via the PatchMemory Int module to the Int to Bools module. If 1 is selected the Int to Bools module then makes the output I have labelled as Panel 1 Visibility switch to “True”, and if 2 is selected the Int to Bools module then makes the output I have labelled as Panel 2 Visibility switch to “True” and so on.
The Bools To Int is used to display the option you have selected in the Popup List.
Note: You must have the First Bool Val connected and set to “False” with the ED Fixed_Bool module, otherwise the numbering will go out of sequence.
The Int To Text is there to convert the numeric value back to a text string.

Panel selector logic

Inside the numbered containers I just put the following to test & demonstrate the sub control

As you select a number in the popup list on the panel, the number displayed will change to reflect your choice.

How the selecter is wired up

The panel selecter in operation.

Popup Sub Menus.

Can I have a submenu system in my popup menus?

Yes you can, but only for for selecting options using the Many to 1 and 1 to Many flow switches.
This is a useful but very poorly documented feature in SynthEdit. It only works when using the stock Popup Menu module, unfortunately the List Entry 4 module does not support this feature.
Here is the popup menu we are all familiar with:

Basic pop up list

However with a little planning we can have a popup menu like this

Pop up sub-menu list

The menu syntax

Using this structure below we can have our popup menu, organized into submenus. In this example we would have an arrangement where we switch between the selected modules , which would be kept in the container. As you can see some of the plugs on the switches have these groups of >>>> and <<<< symbols preceeding the text on them. This is the key to our sub menu system;
>>>>Filters means “start a submenu called filters
<<<< Means “end the submenu.
You can add a submenu to a submenu like so;
>>>>Filters
>>>>Digital
Filter 1
Filter 2
Filter 3
<<<< takes you back to the level Filters, to go back to the top menu level, add a second <<<< after the first.
To add a spacer into the menu, just insert a —-.(four hyphens)

To create the menu below, you would use the following;
Sine
>>>>Triangular
Saw
Ramp
Triangle
<<<<
Pulse
>>>>Random
White Noise
Pink Noise
<<<<
—-
New Menu

Sub menu with a divider line

Does the check mark for the selected item annoy or bother you? This can be removed by selecting a checkbox in the properties panel. If you check the “Momentary” option the check mark (tick) is no longer shown.

The structure inside the container is below, I have not shown too many modules, just enough to give you the idea.
Important note.
I have limited the modules shown below to keep things simple. When implementing this yourself please make sure there is a module that has no output such as a voltmeter connected to all the unused Inputs to avoid the “Hanging Modules” issue. Just put the module inside a container, and un-check the visible property so it remains hidden, it doesn’t have to be a Voltmeter, the volt meter module is special because it has no outputs and has a special flag set that tells SE’s “voice watcher” to ignore it. Other similiar modules should work too. .
This is important as “dangling wires” can mess with polyphony sometimes.

Sub Menus for Modules with pre-defined Option Lists.

We can also use this with an Oscillator or Filter module. Do not connect the Patch Memory List’s Item List plug to the Popup menu, if you do you won’t get your Submenu system, just the default list of options.
The menu system you want to use must be entered into the Popup Menu’s Item List in the properties panel.

Using the following item list will give you the menu shown underneath;
Sine=0,>>>>Triangular, Saw=1,Ramp=2,Triangle=3,<<<<, Pulse=4, —- , >>>>Random, White Noise=5, Pink Noise=6, <<<<,

Sub menu in action (1)
Sub menu in action (2)

DAM V Knob.

Elements of the DAM V Knob.

Hint: This is quite a complex module, so when I’m using it I tend to containerise it, then just connect up the plugs I know I want to use in my project so it’s a bit simpler to connect up and adjust the required settings.

Animation Position: Bi-Directional plug both reports and controls the position of the control knob.
Hint: Help text shown on mouse hover.
Menu Items: Standard right click menu.
Menu Selection: Standard right click menu.
Mouse Down: Set the Bool Value when the mouse is clicked.
Radius: Diameter of the entire control knob.
Gradient Lines OFF/ON: Switches all the lines with gradient settings between single solid colour, and a gradient between two colours. This is a global setting for each control knob.
Note: The lines cannot be switched between solid and gradient individually, the only way you could do this is to set all the lines as “Gradient” and then set the individual line(s) as required with the same Top and Bottom ARGB values.

About the Back Line and Circle gradients.

The Back Line X and Y points for both line A and Line B are measured between the top left 0,0, and bottom right of the control 1000, 1000. These values are the same whatever the size of the control, so setting a line to 500, 0 will put A X halfway along the X axis, and the top of the Y axis.
The diagram below shows the positions.


Back Line OFF/ON: Turns the Back Line off and on, this does not affect the Front Line settings.
Back Line Top ARGB: Sets the Line A colour using ARGB.
Back Line Bottom ARGB: Sets the Line B colour using ARGB.
Back Line Size: Sets the width of the Back Line.
Back Line Point A X: About Line and Circle gradients
Back Line Point A Y: About Line and Circle gradients
Back Line Point B X: About Line and Circle gradients
Back Line Point B Y: About Line and Circle gradients
Front Line OFF/ON: Turns the Front Line on and off.
Front Line Top ARGB: Sets the Front Line A colour using ARGB.
Front Line Bottom ARGB: Sets the Front Line B colour using ARGB.
Front Line Size: Sets the size of the Front Line.
Front Line Point A X: About Line and Circle gradients
Front Line Point A Y: About Line and Circle gradients
Front Line Point A Y: About Line and Circle gradients
Front Line Point B Y: About Line and Circle gradients
Start/End Position: Sets the Start and End points of the Front Line specified in degrees from the bottom of the knob, setting 90 will result in a 180 degree travel for the knob. The Start and End points are identical, they cannot be specified individually. Hint: setting Start/End Position to 30 will give you the same amount of rotation as a normal physical control knob.
Limit Min: Sets the lower limit on the output value of the control knob.
Limit Max: Sets the upper limit on the output value of the control knob.
Note: Limit Min and Limit Max also effect the amount of rotation of the control knob. so if you have already restricted this using Start/End Position, these values will change the amount of rotation further.
CTRL Key Modifier: Sets the control precision/rotation speed when the CTRL key is held down.
Fine Tune: Sets the normal precision /speed of rotation.
Mouse Response: Sets how the mouse interacts with the control.
Mouse Hover:
Number displayed: There are various options:
None, no readout on the control at all.
Animation Position, displays the animation position value only.
Number Text, displays the text string sent to the Number Text plug.
Text, displays the text string sent to the Text plug. This is the append/prepend text string so you can add text such as kHz, mS, dB etc.
Animation Pos Append, displays the animation position followed by the string sent to the Text plug.
Number Append, displays the string sent to the Number Text plug, followed by the Text plug string.
Animation Pos Prepend, displays the string sent to the Text plug followed by the Animation position value.
Number Pos Prepend, displays the string sent to the Text plug, followed by the string sent to the Number Text plug
Number Scale: Sets the scale for the number displayed on the control when using Animation Position. This does not affect the output value.
Number Decimal Places: Sets the number of decimal places used for the animation position value displayed.
Font: Sets the font used for the value displayed.
Font Size: Sets the font size for the value displayed.
Font MAC Y Offset: Applies a Y position offset only on MAC computers. Windows PC’s are not affected by this value. This offset is used to compensate for the difference between Windows and MAC display graphics.
Number Position X: Sets the horizontal position of the numeric display on the control knob.
Number Position Y: Sets the vertical position of the numeric display on the control knob.
Linear Circle A OFF/ON: Switches between a graduated and non-graduated fill.
Linear A Circle fill: When set to a non-graduated fill the TOP ARGB is used.
Linear Circle A Top ARGB: Sets the Top ARGB of the graduated circle
Linear Circle A Bottom ARGB: Sets the Bottom ARGB of the graduated circle. Note: The Bottom ARGB is not used in a non-graduated fill.
Linear Circle A Size: Sets the radius of the Linear A Circle.
Linear Circle A Point A X: About Line and Circle gradients
Linear Circle A Point A Y: About Line and Circle gradients
Linear Circle A Point B X: About Line and Circle gradients
Linear Circle A Point B Y: About Line and Circle gradients
Linear Circle B OFF/ON: Switches between a graduated and non-graduated fill
Note: The Bottom ARGB is not used in a non-graduated fill.
Linear Circle B Top ARGB: Sets the Top ARGB of the Graduated Circle.
Linear Circle B Bottom ARGB: Sets the Bottom ARGB of the Graduated Circle.
Linear Circle B Size: Sets the radius of the Linear B Circle.
Linear Circle B Point A X: About Line and Circle gradients
Linear Circle B Point A Y: About Line and Circle gradients
Linear Circle B Point B X: About Line and Circle gradients
Linear Circle B Point B Y: About Line and Circle gradients
Radial Circle OFF/ON: Turns the Radial circle off and on.
Radial Circle Top ARGB: Sets the Top ARGB of the Radial Circle
Radial Circle Bottom ARGB: Sets the Bottom ARGB of the Radial Circle.
Radial Circle Size: Controls the size of the radial circle, as a proportion of the total size of the control knob.
Radial Circle Offset X: Sets the horizontal offset.
Radial Circle Offset Y: Sets the vertical offset.
Radial Circle Radius: Sets the size of the radial circle.

Plugs on the DAM V Knob module

Using the DAM V Knob.

Here is a simple Sub-Control using the DAM V-Knob. You can see here I containerized the V Knob module itself to simplify things, so that we can just have the control plugs most likely to be used in plain view. Having the Control name and value readout below the knob is a personal choice (you can use the built in value display if you like).
I have taken all three value outputs to an IO module to make the control more versatile.
Hint: When making this sub control, start with the largest control knob size you’re going to use, its easier to scale it down than up. If you make a Sub Control, then increase the radius of the knob is will more than likely get cropped. Start with a large knob, then reduce the radius and you’ll have fewer problems.

The structure inside the container (Yes, Ok I forgot to rename it) is just the module, but I did this to make the Sub-Control easier to understand (and fit on my screen too!).

DAM V List Block Grid

Using the List Block Grid.

This is a very handy module to replace the drop down List Entry module with.
Instead of the Windows style list we can have rows and columns of buttons.
Connecting up the module is simple, see below:

As you can see it’s the usual “hook up” connect to a Patch Memory List3 using the Choice and Item List plugs, the the Value out from the Patch Memory to the DSP module that requires a list selection. As usual there is a default list created from the DSP module via the Patch Memory. So far so good, but all those empty “buttons” aren’t good, and the colours may not match.
The beauty of this module is it’s very customizable, however there are some parts that I found were not immediately obvious without some experimentation. I will do my best to explain these clearly.

First, the Plugs.

Choice: (Integer) Select one of the items in the item list in the drop down list using the items Integer number. Note: The first item in a list is always 0 (Not 1)
Item List: List of items to be included in the list.
Hint: Pop-up hint displayed when the mouse pointer is over the control
Menu Items: List of items in the right click menu.
Menu Selection: Select one of the items in the Menu Item list in the drop down list using the items Integer number. Note: The first item in a list is always 0 (Not 1).
Important Note: Menu Items and Menu list are not the list that is generated by the DSP Module, they are the right click menu!
Mouse Down: Outputs a pulse when the block receives a mouse click,
Read Only: When set to “True” the List Block Grid only receives the selection, it cannot send an output.
Zoom/Scroll Wheel/Zoom Off: Allows use of the mouse wheel to Zoom or Scroll the button grid. Note: When used inside SynthEdit you need to hold down the CTRL + ALT
Edge Scroll Speed: Controls the Zoom /Scroll rate.
Current Play: This button is always the colour set in Current Play ARGB, but this does not affect the List output selection. -1 means no button is made “Current Play”. Note: Button numbers start from 0.
Columns Max: Maximum number of columns available.
Columns Visible: Maximum number of columns visible.
Columns Low Point:
Rows Max: Maximum number of rows available.
Rows Visible: Maximum number of columns visible.
Rows Low Point: If the number of Rows Visible is smaller than the Rows Max value then Rows Low Point sets the point in the list where the list starts displaying.
This is not intuitive so I explain this in more detail later.
Vertical/Across: Sets whether the display of List Items run in a Horizontal or vertical sequence starting from the top left hand corner.
X Gap: Horizontal spacings between buttons.
Y Block Gap: Vertical spacing between buttons.
Line Size: Size in Pixels of the Current PLAY ARGB, and the Line ARGB border lines surrounding the selected button.
Fill Block ARGB: The colour of the selected button. This is your button that changes colour when you have clicked on a choice
Current Play ARGB: The Border colour of a button changes to this colour when the button is clicked, as soon as the left mouse button is released it becomes the selected Line ARGB colour.
Back 0 ARGB: Sets the Row/Column Background 0 colour.
Back1 ARGB: Sets the Row Column Background 1 colour.
Back Seq Row/Column: Sets whether the Back Colours appear as vertical or horizontal stripes.
Note: The sequencing of Row/Column colours is not completely intuitive.
I’ll explain this after explaining all the plug functions.
Back Color Seq: The sequence in which Back 0 ARGB and Back 1 ARGB are displayed. this is in the form of 0 1 0 1 0 1. You must leave a space between each 0 and 1 with no commas or other symbols.
Back Seq Shift: The starting point for the “stripe” sequence.
Back Seq Repeat: How many steps are in the sequence of stripes.
Line ARGB: Border colour of the currently selected item in the list.
Font: Font name. Don’t forget, stick with the default Windows/Mac fonts if you’re releasing your plugin to other people.
Font Size: Text Size in Pixels.
Font ARGB: Text colour.

Using Row/Column Low Point

Say you have a list of 34 Items, and you only want to display 10 of them, to do this you can set Rows Max to 34, and Rows Vis to 10.
So far so good, but at the default Row Low point setting you will see a list that starts with Item 34 (the last one in the list), which may well not be the one you wanted. Fear Not. There’s an answer to this, we use the Low Point setting:
Low Point = 0 the last item of the list will be the bottom button (or right hand) in the button grid.
Low Point = 10 the 11th item from the bottom of the list will be displayed last in the button grid.
Low Point = 20 the 21st item from the bottom of the list will be displayed last in the button grid.

The Back Colour sequencing.

I took a while for me to understand how this sequencing works, one way to do this is with three of the modules set up identically (no need to connect to anything else) as shown below

Demo sequence:
Set Columns Max to 10
Set Columns Visible to 10
Set Rows Max to 20
Set Rows Visible to 20
Set Back 0 ARGB to FFFF0000 (Red)
Set Back 1 ARGB to FF00FF00 (Green)
Now set the Back Color Seq as exactly shown below each module.
Set Back Seq Shift to 0
Set Back Seq Repeat to 5.
You should see the same as I have shown below.
Note: You will find that if you have a 0 at the start of the sequence and a 0 at the end of the sequence (i.e. 0 1 0 1 0) then your colours will start as red green red green red green…so far as expected but at the end we then get a red followed by red, what’s going on? Is this right? well yes it is. If you think about it like below

Sequence 1 Sequence 2

So, If you want to avoid the doubled up colours at the end of the sequence, make it an even number of steps in the sequence. (0 1 0 1 0 1), just make sure you set Seq Repeat to 6. Always have the Seq Repeat value equal to the number of steps in your sequence.

Sequence 1 Sequence 2
RGRGRG RGRGRG
010101 010101

Value display for multiple controls.

This prefab is a means of taking the values from multiple controls, and combining them into one display. The voltages are converted from DSP volts into GUI text, and combined into a single string for display in a text module, the resulting control panel is shown below. The limiting factor for this application would be how complex you feel the display can be, and still be;
a) Useful and easily read,
b) How complex do you want this structure to be,
c) If you are handling large amounts of text data in this way (DSP to GUI conversion) you could potentially be using up valuable system memory, and slowing the plug-in down.
Note: Due to this works , entering text values to alter the control position/value is not possible, for this reason, to prevent bug reports I have made the display’s Text Entry module non-editable, and would suggest that you do the same.

The unit in action-control panel view.

How to combine multiple voltage values into one text string for display.

The main container structure is shown below. The principle is to take (in this example) three voltages, and combine them.

Converting DSP Volts to a Text string. (DSP Volts 2 GUI Text)

We have used this before for adding a readout to a slider or knob, so no big surprises here.
Tip: If you fix the number of digits after the decimal point rather than leaving Decimal Places at the default of -1, this stops the display from jumping around as the value changes and the number of digits changes.

Combining the text strings. (Text combiner)

This is where we combine (append) all the text strings into one long string for display, using the ED GUI String Append module (the typo in the module name is Elena’s not mine).

Creating the control name labels. (Value Labels)

I used the structure space, control name, space | space.
The idea is get a structure like so. Where _ is used to indicate a space

_5.5 _Control 1_|_6.6_Control_2_|_5.9_Control 3_
So the first Fixed string will contain;
_Control_1_|_

The Display.

I used Davidson’s DAM Text Enter module as it gives us options for the Font, Font size, Font colour, Background and Foreground colours. Just remember to set the Text Entry to “Non Writeable”.

Making the switch Prefab more versatile.

What can be added to the switch?

The stock Switch Module in SynthEdit is OK, but could it be more versatile?
Well yes, we can add more outputs. A switch with a volts output is good as far as it goes, but how about including the obvious Bool output? But then maybe a Float output, a GUI Float output, and a Bool Float output? While we are at it how about an LED On/Off lamp, and Text that changes between the On and Off states?
It’s all quite simple to do using the modules shown below:

Swapping the On/Off text labels.

If you think the RD Text Entry modules look different-it’s because they are containerized so we can hide and show the text labels as required. This is done by switching the Visible Plug from true to false using the RH Logic Gate NOR wired as a Bool inverter fed from the Animation Position via a Float To Bool converter.
Note: You can only perform this “trick” using containers.

Converting the LED to Animation Position.

Using the standard LED control would mean using an extra module to Convert Float To Volts from the Volts Out plug on the Patch Memory, so by taking out the Volts To Float converter and the Patch Memory from the LED we can connect it up directly to our existing Patch Memory in the Switch module. Leave the LED containerized as it keeps the Image2 and The Tinted Bitmap Image aligned when you move it.

And below is the final layout. You can set the On and Off text to suit the use of the switch, and the Text colours to suit your colour scheme, withe the text background transparent, or whatever your choice is. Just make sure you get the text carefully aligned in the panel view so it doesn’t “jump”. Tip: while you’re lining the text up disconnect the Input to the RH Logic gate- then both text labels will be visible, and can be aligned easily.

« Older posts