Contents



DH_BreakpointInput

Next

Function:

Provides a GUI interface for the input and display of a series of (X, Y) pairs, where X and Y can be any 2 related parameters.

Each (X, Y) pair is represented by a square or round node, with line segments connecting adjacent nodes. Double clicking creates a node; double clicking on an existing node deletes it. A lock option can be used to prevent the end user from adding or deleting nodes.

Dragging a node vertically changes its Y value on a scale of 0 to 10, with upwards being an increase. Dragging a node horizontally changes the X value, increasing to the right. In the initial view when the module is first inserted, X varies from 0 to 10 across the width of the module. X can become any positive value, however, because the breakpoint display window can be zoomed and scrolled horizontally (see below).

You can use Math modules to scale these arbitrary units to whatever units are appropriate to your application. For instance, for an envelope where X represents time, it might be convenient to let X = 10 represent 1 second. The module itself does not display any numbers so that you can apply the appropriate scaling before displaying values to the user.

Dragging the breakpoint display window horizontally (outside any nodes) scrolls it horizontally. Holding down the Shift key while dragging horizontally zooms in (right) or out (left) horizontally. A single click while holding down the Shift key resets the zoom and scroll so that all nodes are visible. These functions can be disabled, and the view locked in at any setting, if desired.

If you decide you just want to clear the breakpoint display window and start over, hold down the Shift and Ctrl keys at the same time, and click on the window to reload the initial configuration and return to the default scroll and zoom settings. This feature is disabled when the number of nodes is locked.

Left-hand side pins:

Horiz Zoom - Provides external control of the horizontal scale. Default = 1. Decreasing the value (minimum = 0) zooms out; increasing the value zooms in.

Horiz Scroll Offset - Provides external control of the horizontal position. Default = 0, which is scrolled fully right. Increasing the value scrolls left, revealing more on the right.

Init Config - Here you can enter a text string in the form (x1,y1)(x2,y2)... etc. to specify what nodes, if any, you want to display when the breakpoint display window is first displayed, and when it is reset. The default is (0.0,5.0)(10.0,5.0), which gives a horizontal line.

Max Points - Sets the maximum number of nodes you want to allow. After this number of nodes has been created, double clicking will no longer create additional nodes. Use this to prevent the creation of more nodes than the number of values you are using the module to control.

Bkgd, Scale, Line, Node RGB, and Fill RGB - Set the color of the background, scale markers, connecting line segments, nodes, and area under the line segments..
Notes:

  • These are integer COLORREF RGB values, as used by Windows, and can be obtained most easily using the DH_HexRGBtoRGB or DH_HSLtoRGB modules in this package, or the DH_TextToRGB or DH_ColorPicker modules from DH_Sub-ControlPak.
     

  • A  value of -1 can be used for

    • Bkgd RGB for a transparent background.

    • Node RGB to hide the nodes

    • Fill RGB to keep the area under the line segments the same color as the background (default).

Sustain Point - Can be set to NONE (default), or to a node number in the range 2 to 12. The Y value of the next node after the sustain point is locked to the Y value of the sustain point, forcing the connecting segment to be horizontal.


Right-hand side pins:

X Array Out, Y-Array Out - The node (X, Y) values are in the form of 2 parallel arrays. Both X and Y values are taken from left to right in the breakpoint display window, and are output from the DH_ArrayToFloats in top-down sequence. The array values can be accessed 3 ways:

# Points - The actual number of nodes currently in the breakpoint display window, which equals the number of X values, and the number of Y values in the output arrays.

Mouse Down - Becomes TRUE when the left mouse button is pressed while the cursor is on the GUI, and remains TRUE until the button is released.


Parameters (right-click Properties):

Lock # of Nodes - Disables adding and deleting nodes by double clicking.

Lock Scroll & Zoom - Locks in the current view, and disables the scrolling and zoom functions on the GUI.

Hide Scale - Removes the horizontal and vertical scales.

Scale Padding - Slides the display to the right by the specified number of pixels to provide space between the vertical scale and the horizontal 0 position.

Line Width - Adjusts the width of the connecting line segments, from 1 to 4.

Freeze Points - Lets you fix the first and/or last nodes in place so that they cannot be moved by the end user. For example, for some envelope applications you may want to force the last node to a level of 0. Either the horizontal position, vertical position, or both can be frozen. All possible combinations are available:

  • None

  • First-X  (freezes only horizontal position of 1st point)

  • First-Y  (freezes only vertical position of 1st point)

  • First     (freezes 1st point completely)

  • Last-X

  • Last-Y

  • Last

  • First-X / Last-X  (freezes only horizontal positions of 1st and last points)

  • First-Y / Last-Y (freezes only vertical positions of 1st and last points)

  • First / Last        (freezes 1st and last points completely)

  • First-X / Last-Y

  • First-X / Last    

  • First-Y / Last-X

  • First-Y / Last

  • First / Last-X

  • First / Last-Y

Solid Nodes - Draws the node markers as filled squares instead of hollow ones.

Node Shape - Square or Round

Node Size - 3x3, 5x5, or 7x7 pixels


Note:

The module works bidirectionally (input and output). If the values in the arrays are changed, the node's positions will change.  For example, the DH_ArrayToFloats and DH_FloatArray are also bidirectional, so changing the Value pins of the DH_ArrayToFloats, or loading a file into a DH_FloatArray will move the nodes. You can automate the individual nodes by connecting the individual float values to Patch Mem - Float modules.



Demo Hookup:


Top

Next