Quick Tour
In this quick tour we are going to explore the HISE GUI .
When you first start up your desktop version of HISE you will get asked to create a new project. Have a look at Project Management to learn more about its folders and the general architecture of a HISE project.
You can save your project in two different ways. Either with File > Save as Archive as a compressed archive ( .hip -file, which is also the autosave format), or as a human-readable .xml -File File > Save as XML (which is recommended for using version control).
The Module Tree
In the Module Tree on the left side of the interface HISE you can patch together Sound Processors, Modulators and FX (Audio Modules ) to create the Audio DSP (Digital Signal Processing) architecture of your instrument.
The topmost module is the Master Chain . It's the root container of all audio modules and the exit point of the final audio signal.
The top-down arrangement follows the tree structure paradigm and allows to build instruments with an efficent signal flow, optimized for handling a lot of voices in parallel.
Add a Sound Generator
In the Module Tree you can click the "pen-icon" to activate the adding functionality.
When you click the plus icon next to the Master Chain you can create a new Sound Generator . Pick something simple like the Sine Wave Generator or the Waveform Generator and click on the newly created module.
On the header of the module you can change it's name (ID), pick a color, mute the generator, set the Gain/Intensity or pan its audio signal. When you right-click on the header you can copy&paste its xml data, or create script references with which you can access more internal functions of the module by script.
Modulation Chains
Beneath the top-bar you can find the Tab-Section with the Processor & Modulation chains of the Sound-Generator. Each one of them reveales a chain for adding additional processors & modulators to a specific aspect of the generated sound.
MIDI
The MidiProcessor Chain processes MIDI input and scripts before the actual sound is generated. This includes incoming MIDI Messages, CC Inputs as well as executed scripts. Here you can add a couple of useful Midi Processors , and a Script Processor with which you can inject your own scripts into each specific Sound Generator to finetune its behaviour.
Gain
Via the GainModulation Chain you can modulate the volume of the sounds after the sound generation. You can see that it already contains a Simple Envelope -Modulator by default (as indicated by the little 1 ) to remove the start and end clicks of a raw synthesized soundwave.
Pitch
As the name suggests, the PitchModulation Chain gives you access to modulate the pitch of the generated sound in a range from -12 to +12 semitones(st ). It features the same Modulators as the GainModulation Chain.
FX
The EffectChain is applied at last. Here you can add a bunch of well-known Effects to spice up your sounds.
Modulators
The modulators for the Gain and Pitch-chains deserve a deeper look. They represent a generic type of modulator with the task to generate a sample accurate (real-time) control signals to modulate their respective sources.
When you look at the header of a Gain-Modulator you can see that the "Gain bar" (dB) of a Sound-Generator is replaced by an Intensity bar that shows the values from 0 to 1, and in the Pitch-Modulators a range from -12 to +12 semitones ( st). The Intensity sets how intense the modulation should be applied.
You can visualise their signal with clicking on the little indicator next the modulators name.
Hit the plus icon of a Modulation-Chain to add modulators from the following categories:
Voice Start Modulators (polyphonic):
- which set a value directly when a key is pressed and a voice is started. (see: Velocity Modulator )
Time Variant Modulators (monophonic):
- whose signals vary over time and can influence the voice dynamically. (LFO )
Envelope Modulators (polyphonic):
- who follow a defineable envelope to shape the tone of the voices. (AHDSR )
In a few of the TimeVariant and Envelope-Modulators you'll even find slots for modulating the Modulations, which creates the possibility for some quite complex modulation arrangements.
The best way to explore all the features of the Modules and Modulators in HISE is probably to dig in right away and start to add, combine and delete some modules and play around with them.
Behind the scenes, the architecture of modules that is built within the Main/Preset Workspace is reflected in the .xml
file that is saved in the XmlPresetBackups folder. After you have saved your preset as an
.xml
-file
File > Save as XML you can open it with an external code editor to take a look at its raw architecture. This can be quite insightful, especially if you want to understand how to access and manipulate the modules and their attributes via
scripting
.
The Code Editor
When you open a new HISE project for the first time, you will see two editor next to each other:
- The Code Editor which an IDE-like Code editor for scripting.
- The Interface Designer which helps you to create a GUI for your plugin.
The Master Chain holds a ScriptProcessor named "Interface". The Code Editor shows its "onInit"-Tab. This is the main script in which you can start scripting a GUI or any other interaction inside HISE. Per default this script contains a function to create an interface, that is displayed in the Interface Designer .
Content.makeFrontInterface(600, 500);
You can click the little "open icon" next to the ScriptProcessor "Interface" to open the script and the Interface Designer.
Let us test the scripting. Type:
Console.print("Hello World");
in the onInit Tab, and hit [F5] to compile. This evaluates the script, redraws the interface and prints the message to the Console beneath the editor.
We don't want to delve too much in scripting right now but it's important to know that even the basic use of HISE relies on scripting and learning about it is needed if you want to craft your own instrument or plugin. Check out the Scripting docs for more.
Interface Designer
Now we'll take a look at the
Interface Designer
. This is the place where you create the interface for your instrument/plugin. In the top-left corner of the Canvas you can find a little pen icon [F4]. With it you can toggle between the edit
and the presentation mode
of the Interface Designer.
While in edit mode add a new Slider UI Component by right-clicking on the surface of the interface.You can drag the slider around or move it pixel-wise with the arrow keys (hold Ctrl to move it 10 pixels and/or Shift to rescale the elements boundaries). There is also the option to easily copy & paste the UI Component with dragging and holding the Alt -Key and to multiselect UI Components while holding Ctrl . You can delete the component with the Del -Key.
Property Editor
On the right hand side you can see the Property Editor . It lets you access and modify different properties of an UI Component.
The Sliders ID
will be "Knob1". You can change it to anything you want, but you should be aware that the ID
is the internal handle for accessing the component via scripting. So if you should want to change it at a later stage it's quite easy to mess things up. The ID
should therefore be as consistent as possible. If you just want to change the name of the slider you can do this via the text
property.
If you toggle back to presentation mode [F4] the interface will lock down. You can now use the controls like in a finished plugin.
Component List
On the left hand side of the Interface Designer you can see an overview of your added UI Components in the Component List .
You can drag the Components to change the z-order of the components from the top (background) to the bottom (front).
A neat way to group several elements together is to drag them into a shared Panel Component. This makes it easy to structure complex projects as well as to implement page-like UI-designs.
You can open a JSON representation of the UIComponents properties when you press the [j]-Key with a selected element. You can then edit these values on the fly and accept the changes with [F5].
ScriptNode Editor
You can get access to the ScriptNode Editor in two ways. Either you create a ScriptFX in the FX-Chain of the MasterChain for creating a DSP effect, or by creating a Scriptnode Synthesiser Sound Generator in the Master Chain if you want to process incoming MIDI events.
Click the little "open in"-icon next to their name to open the ScriptNode Editor.
After creating a new DSP-Network you will see a empty container in which you can add new DSP nodes. Clicking into the chain opens up a "Create Node" window in which you can add new nodes and built your DSP-Network. Take a look at the Scriptnode Node list and the ScriptNode 101 to get started.
Sample Editor
The Sampler Workspace is built all around the the Sampler Module and displays three of its tabs in one workspace.
The main task of these tabs is to map your samples into SampleMaps , edit them to suit your needs and finally export the mapped samples into a deliverable file-format that can be shipped with your instrument.
General Workflow:
- Put all the samples that you want to map into your Projects Sample Folder
- Drag the samples from the Filebrowser into the Sample Map Editor and choose one of three options to map them:
Drop Point , which places the samples where you drag them. Pitch Detection , which automatically tries to detect the pitch of the samples.Filename Token Parser , which reads the filename of your samples and maps them according to your requirements.
- Edit and finetune your samples with the Sample Editor and the Sampler Settings .
- When you are happy with the map, save it. It'll appear in the SampleMap folder. You can now access SampleMaps with scripting[link] and play them with your instrument.
- If you are sure that you won't change the samples anymore you can compress them into the lossless HLAC Monolith file-format
.ch1
(per SampleMap). This speeds up streaming-performance and reduces file-size. - In the final step, these Monolith files can be collected and exported together as HISE Resource Archive File
.hr1
via Export > Export Samples for Installer to distribute the samples alongside your instrument.
HISE Snippets and Examples
By the way: Did you know that it's very easy to share your project as snippet? Exporting your preset via Export > Export as HISE Snippet
will copy a base64-encoded version of your projects .xml
to your clipboard. The HISE snippet is also able to embed referenced scripts (include("")
) in the code as "embedded" files.
You can easily share this string on the Forum (tip: surrounding the string with markdown code-fences (three successive backticks) will make it look much nicer.)
Import the HISE Snippet from clipboard via File > Import HISE Snippet .
Snippet Browser
Under Help > Browse example snippets you can find the Snippet Browser in which you can save your own HISE Snippets or explore a range of example snippets that showcase a broad range of HISE functionality.
The Snippet Browser will open a detached HISE instance, so that opening different snippets won't interfere with your current project. You can add your own HISE snippets to this instance and then click the plus icon on the top-left to save the snippet to the Snippet Browser. You can add a little description, categories and tags to it.
If you want to check out the example snippets click the cog-wheel-icon , set a snippet directory and username and download the latest example snippets and assets.
If you want to contribute to the Example snippets please file a üull request at: HiseSnippetDB .