Desktop apps

Mobile apps

Posted Jan. 30, 2006, 3:08 p.m.

"More than just DX pianos"

In the last tutorial, I introduced the concept of FM algorithms, the ways in which FM operators can be connected together to create sounds. A Thor FM Pair Osc comprises two operators - a modulator that is permanently connected to the FM input of a carrier - and we can represent this as shown in figure 1.

Figure 1: The algorithm of a Thor FM Pair Osc

Of course, Thor has three oscillator slots, and you can place an FM Pair in each of these so, by default, the standard algorithm offered by Thor is as shown in figure 2: three pairs that can be mixed together, but which don't - for the moment - interact in any other way. There are many uses for this algorithm, which can be used to create very interesting string ensemble and organ patches, among others. But I fancy stepping beyond these, so I'm going to demonstrate this algorithm by showing you how to create an evolving pad that has a rich, analogue flavour.

Figure 2: Placing a Thor FM Pair Osc into each of the oscillator slots

I know what I like...

Let's start by inserting an FM Pair Osc into each of the three slots in Thor. However, instead of leaving all the Carrier and Modulator frequencies at "1" as we did last time, we're going to create a more complex tone by setting them to "3/1", "1/3" and "7/1" respectively, but with the third oscillator tuned down by two octaves. (See figure 3.)

"What do these numbers mean?", I hear you ask. Happily, the answer is simple: they are multiples of the fundamental frequency of the note that you play. Let's imagine that you play a note with a fundamental pitch of 100Hz. Selecting "1" for both the carrier and the modulator means that the FM Pair will produce a carrier of 100Hz and a modulator of 100Hz, resulting in ωc + n.ωm side-bands of 200Hz, 300Hz, 400Hz... and so on, and ωc - n.ωm side-bands of 0Hz, -100Hz, -200Hz, -300Hz, -400Hz... and so on. Don't worry about these "negative frequencies"; they are simply the same as positive frequencies with the phase inverted. However, because the amplitudes of these components are not the same, they don't cancel each other out and (fortunately) we don't obtain silence!

Clearly, using "1" and "1" (or, for that matter, any equal numbers) as the carrier and mod values generates an harmonic series, albeit with an unusual amplitude distribution. So, what about using a carrier value of "1" and a modulator value of "3"? Now we obtain ωc + n.ωm side-bands of 100Hz, 400Hz, 700Hz, 1kHz... and so on, and "reflected" ωc - n.ωm side-bands of 200Hz, 500Hz, 800Hz, 1.1kHz... and so on, which is an harmonic series every third harmonic missing. This is similar to a pulse wave with a duty cycle of 1/3, although it has a somewhat different timbre.

I'll leave you to work out what other combinations of the carrier and modulator values can generate, and return to the sound described a few paragraphs ago. With no frequency modulation taking place, this gives us the composite tone presented here as sound #1. As you can hear, this has components at the fundamental, 3rd harmonic and 7th harmonic:

Your browser does not support the audio element.

Figure 3: The basis for an evolving 6-op pad(Click to enlarge)

Let's now apply Frequency Modulation. However, instead of dialling in a static amount by using the FM knob in each of the oscillators, or even using the same external source for controlling the amount of modulation, I'm going to apply three different modulators that determine the amount of FM taking place in each FM Pair so that the modulation index (and therefore the tone of each oscillator) will change dynamically without reference to the others. Figure 4 shows how I have used the modulation matrix to direct the outputs from LFO1, LFO2 and the Global Env in looping mode (so that it acts as another LFO) to the three FM Pair Osc FM amounts. I have ensured that the rates of each of these LFOs are different from the others, and I've even added some key-follow in LFO1 so that the rate changes gently as I play up and down the keyboard. The result of playing just a single note (in this case, middle C) of this patch is captured in sound #2:

Your browser does not support the audio element.

Figure 4: Making the pad evolve(Click to enlarge)

This is not a type of sound normally associated with an FM synth, but now I'm going to warm it up in ways that were not possible on the ‘classic' FM synths such as the DX7 and its ilk. For example, I can use the Shaper to add a degree of grittiness, plus a low-pass filter in the Filter 3 slot, which I use as a tone control to eliminate the higher frequencies introduced by the distortion. Next, I can add some un-modulated delay to give the sound more ambience. If I play this patch (shown in figure 5) a little more than an octave lower than the previous sample and record it a little too ‘hot' so that it's on the edge of further clipping (yes, the residual distortion is intentional) those of you old enough to have been listening to Genesis in 1973 should go... "Oh, wow!" As you can hear, FM synthesis has a wholly undeserved reputation for creating only thin, percussive and generally uninteresting sounds:

Your browser does not support the audio element.

Figure 5: "Me? I'm just a lawnmower..."(Click to enlarge)

FM as a noise generator

I've now explained what happens when FM side-bands drop below 0Hz, but that leaves an interesting question... what happens when they exceed the bandwidth of the system? I'm going to answer this while discussing the concept of FM feedback.

If you look closely at most hardware FM synthesisers, you'll notice that many algorithms show a loop in the algorithm, as illustrated in figure 6. This is called "feedback", and it shows that the output of (in this case) operator 6 is being fed back into its own FM input.

Figure 6: Classic FM feedback

Thor is unable to do this because operator 6 is one of the Mod oscillators in an FM Pair Osc, and we cannot access it. However, all is not lost, and we can feed the output of an FM Pair into its own FM input (as shown in figure 7) using the modulation matrix. If the Mod oscillator is contributing no FM, we are now feeding operator 5 back into itself.

Figure 7: Feeding back an FM Pair

To investigate what this does, let's start with a simple FM set-up that has no frequency modulation taking place. As we discussed in the previous tutorial, this patch will generate the consistent sine wave heard in sound #4:

Your browser does not support the audio element.

Now, instead of rotating the FM knob to modulate the FM Pair Osc's carrier using its built-in modulator, let's use the modulation matrix to feed the output of the oscillator back into its own FM input. I'll use an envelope generator (in this case, the Mod Env) to control the amount of feedback so that you can hear what happens as it is progressively increased. This patch is illustrated in figure 8 and its output presented as sound #5. As you can hear, the tone begins to change dramatically as soon as the feedback level is increased above zero and, after a transition zone in which the frequency is unstable, the output quickly turns to noise:

Your browser does not support the audio element.

Figure 8: Progressively increasing the amount of feedback(Click to enlarge)

If you consider what's happening, this makes sense. As we've discussed, side-bands are created when the carrier is frequency-modulated, and when the modulation index (which, in this case, is determined by the amount of signal in the feedback loop) is small, an harmonic series is produced so we obtain a more complex tone than before.

Now let's skip over the unstable region (which, to be honest, defies simple explanation) and consider what's happening when the modulation index is large. As explained in the previous tutorial, the bandwidth of the spectrum is determined by the modulation index, but no digital synthesiser has infinite bandwidth, so when the upper end of the harmonic series tries to exceed the bandwidth of the system, an effect called "aliasing" occurs. This is, in effect, a reflection of component frequencies off the upper limit of the system (called the Nyquist frequency) and it generates new frequencies that - except by the most remarkable co-incidence - will not lie on the harmonic series. Now the carrier is being fed all manner of unrelated frequencies, and these produce a hugely complex new spectrum that is again fed back into the oscillator, further complicating the output. This is again fed back again into the operator and, as you might imagine, the output soon includes thousands, then millions of component frequencies, which we hear as noise. This makes FM an unlikely, but hugely powerful generator of drum, percussion and other noise-based sounds. Use the modulation index to determine the noise colour and then shape the sound appropriately and... voila! Sound #6 (which was generated using two instances if Thor) demonstrates what you can achieve using FM Pair oscillators to emulate an analogue drum machine:

Your browser does not support the audio element.

A few more tips

As we have seen, Thor's FM Pair Osc offers just integer relationships (1, 2, 3... and so on, up to 32) between the carrier and modulator frequencies. This means that, aliasing notwithstanding, it will always generate an harmonic series. But many of the more interesting FM sounds, such as bells, chimes and gongs, have enharmonic components generated by non-integer relationships between the carriers and modulators. Happily, Thor allows us to do this, although not necessarily with the same flexibility as a DX7.

Figure 9 shows a patch in which the output from the FM Pair Osc in slot 2 is modulating the FM Pair Osc in slot 3 via the modulation matrix. There are a number of things to note about this patch. Firstly, Osc2 is detuned with respect to Osc3, so the side-bands are "enharmonic" - i.e. they do not lie on harmonic frequencies. This is hugely important, because many natural resonators are enharmonic, and it's hard to generate their sounds in any other way.

Secondly, the amount of frequency modulation (determined by the first line in the modulation matrix) is being scaled by the MIDI Note number. This is also hugely important. You may remember that I wrote in the previous tutorial, "if you want the tone of an FM-generated sound to be consistent as you play up and down the keyboard, you need all three of the modulator, the carrier, and the amplitude of the modulator to track by 100%". Scaling the amount of FM in the modulation matrix is the way that we achieve this.

Thirdly, I have used the note number to shorten the decay of the Amp Env as I play up the keyboard, thus emulating one of the natural characteristics of acoustic sounds and, finally, I have added just a smidgen of pitch modulation to Osc3, driven by LFO1. This doesn't just add vibrato; it also modifies the nature of the sound slightly because it's changing the relationship between the modulator and carrier frequencies.

You can hear the result of this patch in sound #7:

Your browser does not support the audio element.

Figure 9: An FM musical box(Click to enlarge)

Final thoughts

I could write many, many tutorials about the capabilities of FM synthesis and how you can take advantage of them within Thor. For example, I haven't touched upon the amazing brass sounds that FM is capable of generating, or the solo strings that can almost fool you into thinking that you're listening to a genuine orchestral instrument. But I'm going to finish by showing you the hugely complex FM algorithm that Thor is capable of supporting when you insert FM Pair oscillators into each of the three slots available. The black lines in figure 10 are "hard-wired", and any of the blue, red and green lines can be invoked (or not) in the modulation matrix. If you choose the appropriate lines and then redraw the relationships between the operators, you'll find that subsets of figure 10 can recreate many of Yamaha's FM algorithms. But in addition to the FM paths shown, there are three amplitude modulation and sync paths hard-wired within Thor, not to mention the more esoteric FM and other interactions that you can set up using scaled paths and functions in the modulation matrix. Ultimately, there are many things that you can do on a DX7 that you can't do in Thor, but there are just as many more that you can do in Thor that you can't do on a DX7. In all likelihood, only a limited number of these will be musically useful but, if you're prepared to experiment, who knows what you might discover? Now it's over to you... enjoy FM.