Audio Modules
An Audio Module is a basic building block of HISE. You can stitch them together to create your instrument/plugin. They come in four different base types:
Every module has a topbar with at least four controls:
Fold/Collapse > Processor ID > Bypass Button > and an X to delete it.
Behind the scenes (in the module .xml
-tree) every HISE Module
is called Processor. Each modules has its specific "Type=" attribute, that declares what it "is" and a unique Processor ID
that identifies the individual module. A script reference
to a module needs a consistent Processor ID
to point to, so be careful to change the Processor ID
later on, because it will probably break your references.
A right click
on the topbar of a module opens a dialog in which you can copy the modules .xml
to the clipboard. You can paste it into a ParentProcessor to create a duplicate of it.
In the dialog you'll also find an option to "create a script reference"
to the module. Paste it into a ScriptProcessors onInit
callback to access the modules attributes with scripting.
HISE module reference types
The HISE module architecture is based on a strong hierarchy of inheritance with a few interface types. This means that every HISE module has exactly one base class but can have multiple interface classes that add additional functionality.
For example the Velocity Modulator
has the base class Modulator
, because it creates a signal that can be used to control parameters of other modules.
However, it can also be connected to a Table that is used to change the velocity curve. Therefore, it has an additional interface type: TableProcessor .
Depending on what functionality you want, you need to create a generic or typed reference to the desired base class type or interface.
const var v = Synth.getModulator("VeloMod"); // create a base class reference
v.setAttribute(v.UseTable, 1); // enable the table
v.setIntensity(0.5); // change the intensity to 50%
const var v_t = Synth.getTableProcessor(); // create a interface class reference
v_t.addTablePoint(0, 0.5, 0.25); // create a table point in the centre.
// short cut - create a temporary interface reference
v.asTableProcessor().addTablePoint(0, 0.5, 0.25);