Practically FM (Part 1)
The start of a new series for FM synth owners, in which Martin Russ attempts to give away the secrets of FM programming!
The original ROMs which came with the Yamaha DX7 were a very good showcase of the imitative possibilities of FM synthesis, but because of this they gave the impression that the DX7 was not very good at smooth, washy synth type sounds. In fact, several reviewers at the time of the DX7's launch said that it was not capable of producing this type of sound. As you may have heard over the last five years, they were not exactly 100% correct!
The secret of good comedy is timing - and in much the same way, the secret of obtaining nice slushy, chorused sounds is in the structure and detuning of operators. And so, rather than philosophise about algorithms and such, I will reveal the first example. For all the examples in this series, I will either use the DX's 'initialised voice', a special 'starter' voice of my own invention called Vanilla, or a voice from the two original DX7 ROMs. (Owners of DX7II synths who have no access to the sounds in the first two ROMs, but own an Atari ST computer, can obtain a disk of these voices direct from SOS Software, otherwise they will have to beg, steal or borrow them - in extreme cases they may need to enter the voice parameters manually!)
The first example uses Vanilla as its starting point. ('Vanilla' is really just the Initialised Voice, extended to make it easier to set up more complex voices.)
OK - edit Init Voice to produce 'Vanilla' and listen to what it sounds like. It has been likened to a cross between a harpsichord and an organ - it serves its purpose very well, although I don't think anyone would want to use it as it stands! You should store the Vanilla voice for future use.
Vanilla uses Algorithm 2, which has a carrier/modulator pair with feedback on Operator (Op) 2, in parallel with a stack of four Operators containing 1 carrier and 3 modulators. Select Op 1 and Op 2, turning off all the other Operators. Listen again. Set Op 1 to a Fixed Frequency of 1.000 Hz and take another listen. You may like to revert and listen to the original sound for comparison purposes. Now increase the Feedback to 5. Then to 6, and then 7, listening all the time. We now have quite a rough and ready synth type sound, vaguely reminiscent of a Roland Juno sawtooth with the VCF wide open. Do you hear the 1 Hz frequency as a sort of beating?
Now repeat the procedure for Operators 3 and 4, the other part of the Algorithm. Set the Output Levels for Ops 5 and 6 to 75. Listen to the two halves of the sound (Operators 1 and 2, and Operators 3 to 6) and notice that the pair sounds similar to the stack of four Operators. And now for the first bit of magic! Detune Op 2 to +3, and listen to how the full 6-operator sound suddenly comes alive. You can increase the Detune to +7 for a really strong chorus.
If you listen to the pair and the stack separately you will hear only the beating at 1 Hz; the chorus effect is generated here by detuning 'across' the two parallel parts of the algorithm. This is a very important tool in generating both realistic and artificial sounds, and we will come across it many times in this series.
OK - now restore Op 2's Detune parameter to 0, and try detuning Op 3 instead. This time, unexpectedly, there is no chorus effect! Now set the Fine Frequency of Ops 4, 5 and 6 to 1.01 and set the Detune values to -7. Finally, adjust the Detune of Op 5 from —7 up to +7, and back to 0, listening as you do so. You probably found that +7 was rather too large a value, producing too much chorus effect. This technique of changing the parameters on an Operator inside a stack, leaving those on either side alone, is another gem which we will see again and again.
One more technique which bears further experimentation is to try increasing the Output Level of (say) Op 6, whilst reducing by about the same amount the Output Level of Op 5. This process of adding to the Output Level of one Operator whilst reducing the Output Level of another is yet another standard technique which we will continue to exploit.
The sound we now have is considerably improved from the starting point, but the envelope is somewhat lacking. Setting Rate 1 of Operators 1 and 3 to a value of 70, and Rate 2 to 35, with Level 1 of Ops 1 and 3 at 90, should produce an effective exponential envelope which suits the tone we have generated. Rate 4 of Operators 1 and 3 can usefully be lengthened by setting them to about 40. The resulting synthesized string sound - called 'SOStrings', of course! - is perhaps a trifle bright at the top end of the keyboard, but this is our first outing, remember! I have tidied up a few of the last details, like the Key Scaling, just to finish the voice, but I will cover the final touches that can be made to a sound in another article. Meanwhile, take a look at the finished 'SOStrings' voice patch sheet accompanying this article.
As with all the best voices, it should be easy to transfer this voice across to 4-operator FM synths. The accompanying DX100 patch sheet shows this version, and it should be easy to convert the data to a form suitable for the DX27, FB01, or TX81Z. Notice that I have used one of the standard 'tricks' of FM on the 4-operator synths - that is, I have used high Frequency Ratio values (4.00) in this case, to get a useful amount of Detune, and then used the Transpose control to restore the normal keyboard range. This sometimes has the unfortunate effect of making the lowest note on the keyboard jump up an octave, as it does in this case, or bringing the top note down an octave. This is not a fault in the programming of the voice, merely the effect of a hardware restriction within the FM chip itself - the range of frequencies the 4-operator chips can produce is often more limited than the 6-operator type. Some 4-operator synths suffer more badly than others - on some early DX21 models, it was possible to restrict the keyboard to a single octave by using high Frequency settings and lots of Transpose! When you come across problems like this, it is a good indicator that your programming is pushing the instrument near to its limits!
Each month, when I have finished the 'practical' part, I will then go into depth as to what is happening. You should undertake the exercise detailed above and then come back and read this explanation. That way you will be familiar with what happened at each stage. It is probably best if you sit at your DX, do the practical, and then read this section, so that you can confirm or explore further.
So, looking at Operators 2 and 4 you should notice another interesting feature. We have detuned Op 2 away from Op 4, but look at Op 4's frequency: it is detuned by -7 but the Fine Frequency is set at 1.01. In other words, we have taken it up by the smallest Fine Frequency interval, but down by the maximum Detune amount! What is happening here is that the change-over point between the three frequency measurements is being used to give careful control over frequency. Starting at a Ratio of 1.00 (to 1.00, as always implied) then successive increases will take us through Detunes of +1, +2, etc, up to +7. At this point the Ratio changes to 1.01, and the Detune starts at -7. Figure 1 should make this clearer.
So how does the sound work overall? Well, the two 1 Hz carriers act as low frequency oscillators (LFOs) producing vibrato, and so they move the major pitch elements of the resulting sound up and down in pitch slightly. The Detune between the pair (Ops 1 and 2) and the stack (Ops 3, 4, 5, 6) modulates the amplitudes of the two halves, whilst the Detune within the stack provides additional vibrato. The final result is the chorused, string-like sound we set out to achieve.
The VoiceMaster DX21/27/100 editor for the Atari ST is available from Soundbits Software UK, (Contact Details).
A shareware version of Lawrence Wilkes' DXpert editor for the Atari is available for £7 from SOS Shareware, (Contact Details).
Feature by Martin Russ
Previous article in this issue:
Next article in this issue:
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!