Feedback in FM Synthesis

FM Synthesis can be difficult to understand. Those of us who spent time programming a Yamaha DX7, the leading FM synthesizer of the 1980s, also know how confusing it can be to program. Fortunately for those who are nostalgic for classic synthesizers of the 1980s Digital Suburban develed Dexed, a DX7 emulator.

The good news is that Dexed works just like a DX7, allowing you to port over classic patches. The bad news is that Dexed works just like a DX7, in that it can still be confusing and awkward to program. However, the better you understand FM synthesis, the better equipped you’ll be to tackle Dexed.

In this post we’ll investigate feedback, which in FM synthesis is when some of the output an operator is fed back to modulate itself. In a DX7, there are eight levels of feedback available (0-7 inclusive). No feedback is present at level 0, while at level 7 there is (presumably) 100% feedback.

I tested feedback in Dexed by using algorithm 32, which is the only algorithm in which a carrier modulates itself. I turned off all the operators except for operator six, which is set at full volume, and at a ratio of 1.00 (the first harmonic). Each pitch is at A4 (440Hz) with full velocity.

It is interesting to see and hear the results of the test. Predictably at feedback level 0 a simple sine wave results. At feedback level 1 the second harmonic starts to appear at less than 1/4 the strength of the first harmonic. At feedback level 2, this second harmonic somewhat stronger (at approximately 1/4 strength). At feedback level 3, the first four harmonics are present with the strength of each being about 1/3 the strength of the previous harmonic. At feedback level 4, the harmonic spectrum of the first eight partials of a sawtooth wave become recognizable. We get the first 18 partials at level 5. At level 6 we get what could be called a hyper sawtooth wave, with a very strong peak at partial 34, with lesser peaks running up from partials 26 through 46. Finally, at level 7 we get a white noise spectrum with added strong partials at the first two harmonics.

This analysis bears out when looking at the resulting waveforms in Audacity. We start with a pure sine tone, and with each increase of the level we start to see the sine wave lean to the left a bit. By feedback level 3, a smoothed sawtooth wave is clearly visible. At level 5 we see a pretty close approximation of a sawtooth wave. The waveform at level 6 appears to be 34 periods of sawtooth waves shaped into sawtooth wave type shape at the frequency of the first harmonic. Furthermore, we get a significant amount of positive side DC offset in the waveform, leading to some distortion (we had actually gotten some DC offset at level 5 as well). The waveform at level 7 has a clear profile of white noise, though it seems to have occasional fragments of a noisey square wave. Interesting enough we also get a small amount of negative side DC offset.

Ultimately, what we learn is that feedback shapes an oscillator’s sine wave into a sawtooth wave, peaking at level 5, moving into a hyper sawtooth wave at level 6, and becoming largely white noise at level 7.

Subtractive Synthesis Waveforms in Logic Pro’s RetroSynth

If you’re like me, you may wonder, how accurate are the waveforms in LogicPro’s RetroSynth subtractive synthesis emulator. It turns out, they’re pretty accurate. I tested the sine, triangle, sawtooth, square and pulse waves. At first glance, RetroSynth seems to only offer triangle, sawtooth, square, and pulse waves (noise as well, but that’s for another day) . . .

However, if you look at the amplifier portion of the emulator, there is a knob labeled “Sine Level.” Thus to get a sine wave, you have to pull down the filter CF all the way to the bottom, and pull up the Sine Level . . .

For the test I put in a whole note with a key velocity of 100 for each waveform. I used the note A1 (middle C=C4), resulting in a 55 Hz tone. You can see and hear the results in this video . . .

Note however that there are some weird artifacts during the square wave, which come from data compression.

Those of you who know your waveforms know that a sine tone is a pure tone that has no overtones (harmonics). A triangle wave is a sum of all the odd harmonics, where the fundamental is harmonic 1, with the amplitude of each partial is 1/(n squared). A sawtooth wave features all harmonics with an amplitude of 1/n. A square wave includes all the odd numbered harmonics with the amplitude of 1/n. A pulse wave is a variable square wave, and the harmonic content is reliant upon the width of the pulse. I used a graphic equalizer in Logic Pro to display the harmonic content of each waveform.