8 Operator 8 Voice FM SynthThe path labeled "Operator 0 Feedback" is a connection for feedback of operator zero into it's own input. It is used as an envelope controlled waveshaper. This feature is disabled by setting the feedback LEV and feedback BIAS controls to zero.
The path labeled "Operator Modulation" links one operator to the next. When the "modulation level" control is set to zero, the link is disconnected making the next operator the starting operator for a new sound generator.
"OP Pitch" represents a phase increment value which will ultimately determine the pitch of the operator. It can be the same for each operator, or it can be different. It can be coarse and fine tuned. Coarse tuning is a positive offset from the pitch supplied by the MIDI note on message.
"C:M RATIO" is really a multiplier the product of which is the pitch multiplied by the user supplied ratio.
The blocks labeled OSC are oscillators with a ramp output capable of driving a sine table (labeled SINE). The input to OSC is a phase increment value.
Note how the ADSRs (except for the operator 0 feedback) have an implied dual use. If the operator is the final operator in a chain, the ADSR acts as an audio amplitude envelope generator. If the operator is not that last operator in a chain, the ADSR is a modulation amount envelope generator.
This structure supports any one or more operators contributing a sine wave to the voice's mix.
The LV mixer level controls going to the mixer inputs allow any operator to contribute to the audio output, including intermediate operator outputs.
Each BIAS input is a separate register which can be set via sysex message.
The chain of operators shown is partial and will be eight operators in total in the synth implementation. 8 voice polyphony is targeted on a Spartan-3A 400K gate FPGA.
This structure was described and suggested to me by Tom Wiltshire.