
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:
-
You can convert the values of each of the arrays to individual
Floats using
DH_ArrayToFloats modules.
-
You can transfer the arrays to
DH_FloatArray modules.
-
You can play the values out one at a time using
DH_ArraySequencer modules.
# 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
|