“It’s The Algorithm”

DSC05541.jpg

“Digital Programmable Algorithm Synthesizer” was how the Yamaha DX series were denominated. That’s not only a fascinating marketing term. It’s also a slick way to describe the structure of the inner behavior of the device.

I’m not going to get back to the FM basics here. I’ll assume you know how FM works, what’s an operator, a modulator, a carrier, algorithms and feedback. With all that, I’ll describe the simple, yet powerful design behind XFM’s modulation structure.

The original DX7 had 6 operators, and 32 algorithms. That means, there was 32 fixed ways to interconnect the operators. That’s very well known information; the details on those algorithms, not so much. Here’s some insights on that arrangement:

  • The processing order of the operators is sequential, from 6 to 1.

  • Every algorithm has a single feedback loop.

  • Only two algorithms (4 and 6) have a multi-operator feedback loop (meaning, the output of an operator feeds the input of a different operator).

  • All the others have a single self-feedback operator.

  • The maximum number of serial FM modulations is 3 (algorithms 1, 2, 7-11, 14-19, 28). That is a singular fact, as 6 operators allow for 5 modulations (as in 6 -> 5 -> 4 -> 3 -> 2 -> 1).

  • 5 algorithms allow for 3-to-1 modulations: three operators modulating one (12, 13, 16-18)

  • 10 algorithms allow for 2-to-1 modulations.

This selection of algorithms is extremely interesting. Not only from a sound design perspective; it is very clever in the way that allows to internally reuse operational fragments in order to simplify the outer design.

The fact that there’s only 3 serial modulation stages possible simplifies the calculation substantially. Any voice in the DX7 can be solved with a 4-stage calculation, with a few elements in parallel.

The subsequent SY/TG series improved substantially on this scheme. The algorithm #1 in the SY-99 was somehow a statement, showing a 5-serial modulations structure. Operators had two inputs each, with adjustable input level. Feedback could be provided by any operator (well, mostly), and the number of algorithms was expanded to 45.

So far the historical perspective. Since then, several modern software synthesizers (meaning those running on general-purpose home computers) have expanded on this idea blurring the actual concept of algorithm, by adopting a more free form modulation way. XFM follow this somewhat more modern approach.

XFM creates its modulation scheme by indicating each operator who it will receive modulation from.

In the Spartan 6 version (Mojo v3), each operator can receive modulation from itself, or any number of its predecessors. This means operator 1 can receive modulation from 1 (feedback), 2, 3, 4, 5 and 6; operator 3 can be modulated by 3, 4, 5 and 6, and so on.

Also, all six operators outs can be added to the voice output, regardless on the modulation scheme selected.

There are six parameters (one per operator) that select the connection routing (parameters 1 to 6), with a bit-based meaning:

Algorithm Bits.png

The LSB sets the operator to contribute to the voice output. Bit 1 to Bit7 set to 1 mean “this operator is modulated by…”.
As an example, let’s say we’d like to create the following modulation structure:

Untitled Diagram (1).png

Then the parameters for each operator should be:

O1: 15 (output on, modulated by 1, 2 and 3)
O2: 48 (output off, modulated by 4 and 5)
O3: 104 (output off, modulated by 3, 5 and 6)
O4: 33 (output on, modulated by 5)
O5: 64 (output off, modulated by 6)
O6: 64 ( output off, modulated by 6)

The feedback level of the three self-modulating operators in this structure (1, 3 and 6) can be individually adjusted.

In fact, all six operators could be set to self-modulate. This design allows for a very large number of algorithms to be crafted.

In the Artix-7 version of XFM (CMOD A7), this structure is expanded even more: any operator can receive modulation from any other, not only from the predecessors.

This makes for even more possibilities, specially in terms of feedback loops. I’ll expand on this after the A7 version is done.

Similar Posts