The Shape Editor for the Shape oscillator and wave-shaper modules.

The Shape Editor is a fully configurable graphical editor for standard ED Shapes for the Shape Oscillator using the new efficient binary BLOB transmission format.
The “legacy” shape format (string-based and using Volts values) is still supported for entering Shapes as strings by hand or through the appropriate conversion modules provided for compatibility but using this module for shape transmission is now discouraged.
A compact and an ultra-compact version are also included, which occupy less space in the structure view, by having less and less pins exposed (most times you probably won’t need to have all possible plugs exposed for connection).
More shape editors can be stacked making the background transparent. In this case, to allow editing of the background editor (click-thru), the bool option LockAddRemNodes must be enabled or editing must be disabled totally for the foremost editor, otherwise any mouse click in empty areas will be intercepted.

Shape Editor features and usage:

Shapes support from two to 100 nodes. A shape can never have less than two nodes. No such thing exists as an “empty” shape: a “void” or default shape is a shape with just the first and the last node set to zero.
Node values are internally defined in normalized float units: from 0 up to and including one horizontally, and from -1 to and including 1 vertically.
However, for compatibility reasons, node positions are still displayed and accepted in Volts by all ED Shape modules: from -5 to 5 Volts horizontally, from -5 to 5 Volts vertically.
Note about Nodes:
The first and the last node are fixed at position -5 and +5 and cannot be moved horizontally. They must always be present. The nodes between these must be present sequentially. Vertical positions must be in -5 to +5 range. No other characters or spaces may be present. Invalid strings will be rejected.
Legacy String Format:
The “legacy” string format consists of nodes defined between parentheses in Voltage units, for example: (-5,0)(1,-1)(5,1).
This format was inherited from the stock SynthEdit WaveShaper 3.
Connecting GUI Shape Modules to DSP:
Shape information is now stored and transmitted using a new efficient binary BLOB format. This means that every Shape Editor must be linked to the destination module(s) through a Patch Memory Blob module, and where required a Shape BLOB to text string converter.
Adding and removing Shape nodes:
Shape nodes can be added or removed by a double-click. A double click anywhere in the edit field will create a new node at the corresponding mouse position. Double-clicking on a selected node will delete it. The first and last node cannot be deleted: a double click on them will snap them to the specified
baseline for convenience.
Editing/Moving shape nodes:
Shape nodes can be activated with a mouse click and dragged around within their allowed limits: between the neighbouring nodes, and vertically within -5 and 5 or within a smaller range, in cases where custom MinY/MaxY values have been specified.

About Interpolation.

Interpolation Type:
Interpolation Type is still transmitted separately from Shape data. Since different Shape-utilizing modules may support only certain Interpolation Types or even just one, their DSP List pin is always properly set to relay this information to the main Patch Memory List, whose Menu Selection pin must be connected to the corresponding Shape Editor pin, and which will be automatically
configured to only list the supported Interpolation mode(s).
Important: Users must never make any assumptions about the list position of Interpolation Types and their integer values, since they might change in the future and/or more Types could be added upon need.
Interpolation None (0): This mode does not correspond to a physical interpolation and is module-specific. It really means that a module actually only needs node positions (example: to render spectral peaks or sinc pulses …) and not an actual curve. The Shape Editor will simply draw vertical lines starting from the specified baseline.
Interpolation Linear (10): plain linear interpolation (default)
Interpolation Curve 1 (20): equivalent to the former “Spline” method, uses modified cubic splines. Curve interpolation which will never fluctuate but can result non smooth in transitions from intervals of very different width.
This mode still produces a very smooth result (comparable to Curve 2) with uniformly spaced nodes.
Interpolation Curve 2 (30): Natural cubic splines. Always produces an smooth curve interpolation (second derivative is always continuous) at the expense of even huge fluctuations, close to intervals much smaller than their neighbouring ones

ED Shape Editor Plugs:

Shape I/O (BLOB): Outputs the shape description as a BLOB string. Every time the current shape is modified an updated Shape is transmitted from the Shape I/O pin. Every time a new shape is received, the editor will be updated immediately.
Interpolation Choice In (Integer): Allows the user to choose between the three types of Interpolation; None (0), Linear- the default method (10), Curve1 spline (20) and Curve2 cubic spline (30)
Active Node (Integer): The index of the active node, as available to the Active Node pin, this value is not internally stored in any parameter. To maintain it throughout sessions, please connect it to a Patch Memory Integer module.
Whenever the Interpolation Type must be fixed and not user-selectable,
simply do not connect a List Entry or Patch Memory List module, and simply select
the desired Interpolation Type from the Properties or by supplying Integer values.
Editable (Boolean): The editor can be set to read-only mode by setting this plug to “False”. This disables any editing of nodes, allowing use of the module as a graphic display of the shape string.
Lock X (Boolean): When set to “True” the horizontal (x plane) position of nodes is locked, allowing the user to edit just their vertical positions.
Lock Add/Rem Nodes: Addition and removal of nodes can be disabled, to force working with a fixed number of shape editing nodes.
Lock First/Last Nodes (Boolean): When set to “True” editing for the first and last node is disabled.
Y max/Y Min (Floating Point): The editing range for vertical positions can be constrained to within a minimum and a maximum value (Default Min/Max is +/- 5V outside this range the shape is clipped internally by the module)
Base Line (Floating Point): The vertical position of a convenient reference baseline can be specified as needed between -5 and +5 (0 by default)
Reset Value (Text String):- Specify a shape in Legacy string format to use as default value for the Reset pin. If no shape is specified (empty pin), a straight two-points shape (line) at the specified baseline will be used as default
Mouse Down (Boolean):- Outputs “True” active when the user clicks on the editor
Hint (Text):- Set here the “bubble” help text as per usual
Node Size (Integer): Sets the size of the Node in pixels. The size is in pixels from 4 to 20
Node Thickness (Integer): Sets the Nodes border thickness in pixels when the Node is not filled. The size in pixels is from 0 to 4.
Circular Nodes (Boolean): Nodes can be displayed as either squares or circles, setting this plug to “True” sets the shape as circular.
Fill Nodes (Boolean): Switches the Nodes between filled or empty, When set to “True” the nodes are filled.
Shape Thickness(Integer): Sets the thickness of the line defining the shape in pixels allowed values are 1 to 4 pixels.
Border% (Floating Point): The display box’s border size can be specified as a percentage of the total box size. This is the percentage of the border area, expressed as a percentage of every dimension, from 0 to 25 (e.g. setting 25, left and right borders will result each one 1/4 of the box width, and top and bottom borders will result each one 1/4 of the box height)
Border Clip (Boolean):- Setting this plug to “True” prevents parts of the interpolated shape which may result in shapes larger than +5 or smaller than -5 (mostly because of curve interpolation) from being drawn in the border area, and replaces them with a clipping line.
Note: Most shape-utilizing modules do not clip values internally, however when they do, this is clearly specified. Therefore, always set the Border Clip in a consistent way, since a clipping line visible in the editor can be misleading when it’s not expected.
Grid Horiz Divs (Integer): Sets the number of Horizontal (x-plane) display divider bars the values allowed are 0 to 40. (Note: these are the bars running from top to bottom of the display box)
Grid Vert Divs (Integer): Sets the number of Vertical (y-plane) display divider bars the values allowed are 0 to 40. (Note: these are the bars running from side to side of the display box).
BG Top ARGB/BG Bottom ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the top of the display box, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta). When two different colours/transparencies are defined the box’s colour/transparency will change from one to the other gradually.
Grid ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour the display grid, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).
Base Line ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Base Line, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).
Vert Line ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Vertical Line, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).
Diag Line ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Diagonal Line, as standard 32 bits hexadecimal ARGB strings (e.g 80FF00FF is a half-transparent magenta).

The Grid:
Base Line- Shown in Red
Vert Line- Shown in Green
Grid- Shown in White
Diag Line- Shown in Yellow
Shape Fill1- Shown as an empty value.
Shape Fill2- Shown as an empty value.

Elements of the Shape Editors graphic box

Shape ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Shape Line, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).

Fill Grad1 ARGB: Specifies the Alpha, Red, Green, Blue colour for the Shape Fill1, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).
Fill Grad2 ARGB: Specifies the Alpha, Red, Green, Blue colour for the Shape Fill2, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).
The Fill Grads.
The left hand image is with Fill Grad 1 and 2 set to light blue, and the right hand image with just Fill Grad 1 set to light blue.

Fill Graduations for the shape display

Nodes ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Shape Nodes, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a Active Node ARGB (Text String): Specifies the Alpha, Red, Green, Blue colour for the Shape Node currently selected for editing, as standard 32 bits hexadecimal ARGB strings (e.g. 80FF00FF is a half-transparent magenta).

Notes about shapes and shape fill gradients:
**Shape fill gradients will be drawn originating from the specified baseline**
**Double clicking on a node which cannot be deleted (like the first and the last node, or all nodes when addition/removal is disabled) will cause the node to be snapped to the specified baseline**
**When no default shape is specified in the Reset Value pin, a two-nodes straight line shape at the baseline will be used**
**For example, when the shape represents positive values, it makes sense to place the baseline at the bottom (-5); when the shape represents a spectral filtering curve, it may be more logical to set the baseline at top (+5); when it represents signed values, the baseline is more logically placed in center (zero)**

About ARGB Colour settings
These are 32 bit colour settings (including alpha channel transparency) can be specified for every graphical element of the editor as a 32 bits Hex string (e.g. 80FFFF00 is a 50% transparent yellow), allowing for display customization and transparencies. When the alpha channel (first byte) is set to zero, the corresponding element will not be drawn at all. In case of the Background, setting an alpha channel value less than FF will progressively reveal other GUI controls placed on the background in the Panel view by increasing the transparency.

Right Hand Side plugs.

Edit X/Edit Y (Floating point): A pair of Float value editing plugs (Right hand side) which are linked to the currently active node, so that its x,y value can be displayed and entered by hand if needed, by connecting a couple of Text Entry and other suitable modules. (Note: There were originally left hand edit plugs, but these have now been removed, to prevent undue connection of Patch Memories to the module which results in conflicting double storage of values.)
Reset (Boolean): Setting the plug to “True” triggers the reset function, which sets the shape to the one specified on the Reset Value Plug.
Flip X (Boolean): Flips the Shape horizontally.
Flip Y (Boolean): Flips the Shape vertically.

**CTRL key support for precise movements Note: with SE 1.4, CTRL does not work in Structure View.**

The Shape Editor 5 Plug layout