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);

List of base class references: