A sound generator is a HISE module that takes incoming MIDI data to generate audio signals.
The sound generator renders polyphonic voices using the following graph:
It starts with the MIDI processing which takes the incoming MIDI messages and starts / stops the voices. The next step is the rendering of all monophonic pitch modulators: this signal will be merged with the polyphonic pitch modulation signal, but only needs to be calculated once.
Now we iterate over each active voice and render its output - actually it will calculate the polyphonic pitch modulation first, then render the voice output using the pitch modulation data and apply the polyphonic gain modulation plus the polyphonic effects for each voice.
At the end, the monophonic gain modulation will be applied to the voices, then the monophonic effects will be processed on the entire output. The output then will be added to the existing signal (so that you can stack up multiple sound generators).
There are multiple use cases in the instrument design where you would want to have a multichannel routing:
- multimic samples
- AUX sends
- parallel FX processing
A sound generator in HISE can process multiple channels (if applicable, a sine wave generator doesn't need to calculate the signal for every channel obviously).
||The volume of the synth. It is stored as gain value from
||The stereo balance of the synth. The range is
||The number of voices that this synth can play.|
||If you play more than the number of available voices this determines the fade out time of the voice that is going to be killed in ms|
|0||MIDI||Every MIDI message that is received by the sound generator will be processed by this chain. If you ignore the message here, it won't be passed to child modules|
|1||Gain||The volume modulation of this sound generator. The modulation range 0...1 will be used as gain value|
|2||Pitch||The pitch modulation of this sound generator. The modulation range 0...1 will be converted to pitch values according to the BiPolar parameter|
|3||FX||the effect chain of this module|