Creates an instance of QM816
Defines channel parameter numbers, within the unregistered namespace.
Defines channel parameters within the registered namespace
Defines global parameter nummbers, within the unregistered namespace
Defines operator parameter numbers, within the unregistered namespace.
MIDI 2.0 data received here.
Recalls a program
Renders the current audio frame.
Sets the channel delegates
Sets a registered parameter
Sets an unregistered parameter
Algorithm Mode 0/0 (Serial)
Algorithm Mode0/1 (Parallel)
Dummy algorithm for combined channels
Updates an operator for a cycle chCtrl index notation: 0: velocity, 1: modulation wheel, 2: Amplitude LFO, 3: Extra Envelop Generator
Receives waveform data that has been loaded from disk for reading. Returns zero if successful, or a specific errorcode.
Contains a table to calculate Attack, Decay, and Release values.
Macro for channel update constants that need to be calculated once per frame Kept in at one place to make updates easier and more consistent
Macro for channel update constants that need to be calculated once per frame, for combined channels' second half Kept in at one place to make updates easier and more consistent
Macro for channel update constants that need to be calculated for each cycle Kept in at one place to make updates easier and more consistent
Macro for channel update constants that need to be calculated for each cycle for combined channels' second half Kept in at one place to make updates easier and more consistent
Macro for output mixing
Macro for output mixing in case of combo modes
Contains a table to calculate Sustain control values.
Stores channel controller values (modwheel, velocity, etc.)
Defines channel common parameters.
Implements a single operator.
Defines a preset.
Amplitude LFO buffer. Values are between 0.0 and 1.0
Stores ALFO position
Stores ALFO rate
Bank numbers per channels.
Channel control data.
Channel update delegates
Channel data. See rendering function on updating.
Dummy buffer Only used if one or more outputs haven't been defined
Stores control values of the output values. Layout: [LF, LQ, RF, RQ, AF, AQ, BF, BQ]
Stores output filter values. 0: a0; 1: a1; 2: a2; 3: b0; 4: b1; 5: b2; 6: x[n-1]; 7: x[n-2]; 8: y[n-1] 9: y[n-2]
Initial mixing buffers Output is directed there before filtering Layout is: LRAB
Stores LFO waveform selection. 1: Amplitude; 0: Pitch
Mixdown value. Used for final mixing.
Operator data. See rendering function on updating.
Pitch LFO output. Values are between -1.0 and 1.0
Stores PLFO position
Stores PLFO rate
Keeps the registered/unregistered parameter positions (LSB = 0).
Stores temporary parameter values
Preset numbers per channels.
Stores presets. 8 banks of 128 presets are available for a total of 1024. If a channel combination is being used, then bank pairs (0-1, 2-3, etc) will store their primary and secondary halves, and calling either will load both halves.
Contains the wavetables for the operators and LFOs. Value might be divided to limit the values between 2047 and -2048 via bitshifting, otherwise the full range can be used for audio output, etc. Loaded from a 16 bit wave file.
Contains all data related to module info.
The size of the output buffers (must kept as a constant)
The sample rate that the audio subsystem runs at
Basic info about the plugin
The main audio handler, also MIDI outs can be passed there
List of enabled input channel numbers
List of enabled output channel numbers
A delegate where MIDI messages are being routed
Returns the basic informations about this module.
Returns the current sample rate.
Sets the module up.
MIDI 2.0 data received here.
Renders the current audio frame.
Receives waveform data that has been loaded from disk for reading. Returns zero if successful, or a specific errorcode.
Restores a parameter to the given preset. Returns an errorcode on failure.
Restores a parameter to the given preset. Returns an errorcode on failure.
Restores a parameter to the given preset. Returns an errorcode on failure.
Restores a parameter to the given preset. Returns an errorcode on failure.
QM816 - implements a Quadrature-Amplitude synthesizer. This technique was used in early digital FM synths, since it allowed allowed a cheap implementation of the same thing as long as the modulator was a sinusoidal waveform.
It has 16 2 operator channels that can be individually paired-up for 4 operator channels, for more complex sounds. Also all operators have the option for feedback, including carriers. 2 operator channels have 2, 4 operator channels have 3*4 algorithms.
Before use, the synth needs to be supplied with a wavetable file, in 16 bit wav format.