Some hints for making new modules:

The tab order in the "designer" determines the order in which the modules will appear in the module selector, so please
set a poroper TabOrder value for each module in the designer - this includes any separator modules used.

Valued controls for internals need tag value -1, valued controls for inputs need tag 0 - most controls are inputs, but
for instance the delay time for a delay module is an internal value. Typically Internal values are used for setting
values that involve memory management, as this can not be done from the Audio thread.

Please set a sensible tab order for controls placed on modules too - to some extent keyboard editing of a patch is
possible and this will make such editing easier.

Set enabled to false for images (or any stuff that should not be clickable) on modules, so they get 'mouse transparent'.

Module PageName property can not be changed from the designer anymore, it is set from the TabSheet's Caption directly.

All modules must have a unique ModuleType, this is used in the main form to couple the editor module to a synth module.
The coupling between an editor module and a synth module is made in FrmMain in the module Initialization section - a
couple of things need be thought of to make this work: The editor module needs a unique ID and there needs to be a synth
module that inherits from TMod and there must be a proper mapping of the editor module control names to the synth module
Input and Output names.

Separators need a module type of -1; this will generate some separation in the runtime ModuleSlector.

Experimental modules can be marked as not Enabled, they will not show at runtime then.

Placing TWinControl derrived components on a module will present some issuess, like them being invisible in the
ModuleSelector hint popups; try to avoid those on modules, and maybe some Knobs controls should be redone to not inherit
from TWinControl ... this is partially solved, when help was genrated for a module a module image will be present on
disk - when found this wull be used, and it will show the WinControls properly then.

Knob positions as set in the designer will be the default values at run-time, do not edit the default value in the
Designer, just set the KnobPosition.

To get an icon for the module add an image to the Module's Picture property, to add help text add text to the Docs
property.

Inputs, Outputs and knobs on modules need follow a naming convention to be able to map those to elements in the synth
module. They need be named like modulename_controlname and there can only be one underscore there. When the synth module
is made for this editor module it needs to have the controlname part defined in the InputName or OutputName function.

Make sure that when knobs have an associated display that the association is correct and on the same module, or
otherwise strange stuff will happen on editing a patch with that module in it.

You can not add any events to the modules or to the controls on them. or rather you can, but they will be lost at
run-time.

Knobs can have a ControlType property that when set needs to have a registered value. I did make a Delphi property
editor for this, so you can select from a dropdown list. To add a new type a new TConverter class needs to be defined
and registered in KnobsConversions.pas. This serves two purposes, it translates a knob position into a value and it
provides a readable string for the value (with units).

The user can request a patch reset with a button in the GUI, when you want your code to listen to that request you can
watch the ResetFlag property, when it is set the user requested a reset. When handled your code should clear that flag.

