Understanding the DX7 (Part 6)
Our guide to Yamaha FM synthesis continues: this month, Jay Chapman looks at the delights of sub-algorithms.
Part six introduces the joys of sub-algorithms and explains how programming errors can lead to sounds of unexpected quality.
Welcome back! We can now continue our exploration of programming the DX7 by modifying existing voices. In case you didn't follow last month's extravaganza, we're in the middle of trying to set up a 'power chords' sound based on ROM 2B, program 7, otherwise known as 'SYN-CLAV 3'. Don't forget that I'm not trying to copy a guitar sound exactly but instead trying to get the gut-wrenching effect of power chords - this voice should be played loud!
Where were we? Well, we'd got rid of the random Amplitude Modulation effects by considering in detail the DX7's LFO control and routing. We'd also made the general envelope shape more acceptable and freed Operators 5 and 6 and the feedback loop, to give us some flexibility in modifying the voice.
First off this month, a quick note about the Keyboard Rate Scaling values which I mentioned I set to 1 rather than the SYN-CLAV 3 value of 7. Don't forget this is a parameter that applies individually to all six Operators, so you have to set it for each Operator separately.
We now come to one of the most important points in any exploration of DX programming. Note first that the idea discussed below applies equally well to programming from scratch, but the position we are in with the 'power chord' voice is fairly typical as an example. Have a look at Figure 1 - particularly the boxed-in sections in each algorithm. You should notice that the boxed section is the same in all of the algorithms shown. The algorithm used in SYN-CLAV 3 is number 2, which is exactly the same as Algorithm 1 (shown in the figure) except that the feedback loop is around Operator 2 instead of Operator 6. The important point here is that since we're not using Operators 5 and 6 or the feedback loop (for the moment at least) the boxed sub-algorithm is totally responsible for the current sound. This means that we can substitute any of the algorithms that have this sub-algorithm and get the same sound, but with a different potential for modification.
Usually, it's fairly easy to spot which algorithms have the common sub-algorithm you're currently interested in. Sometimes you need to look a little more carefully though - in this case, for example, algorithm 13 isn't all that obvious without a second glance! I'm not suggesting this idea as the only way forward, but it is a simple and logical progression and will let you step through a lot of the possibilities without getting confused as to what you're doing.
The algorithms shown in Figure 1 are not all those containing the sub-algorithm we're interested in. See if you can spot the others from the diagrams on the DX7 front panel - there are 12 of them in all!
Before we start to explore the possibilities presented by some of these 12 different algorithms, it's worth looking a little more closely at the algorithms themselves. In Figure 1, for example, all algorithms but number 6 use our 'spare' Operators (5 and 6) in applying some modulation to part of the boxed sub-algorithm. Note that in every case, the sub-sub-algorithm (!) consisting of Operator 2 modulating Operator 1 is completely untouched. In fact, this is true for all of the 12 algorithms containing our sub-algorithm - this may well be something to do with the fact that the two Operators that are missing on the DX9 would seem to be DX7's Operators 1 and 2.
The significance of the last paragraph is as follows. Currently we have two audible components in the dismembered SYN-CLAV 3 sound. This should be obvious because the boxed sub-algorithm, which is all that is in use at the moment, has two carrier Operators. Since all the related algorithms we're considering only apply the spare Operators 5 and 6 to the component consisting of Operators 3 and 4 (except algorithm 6 which creates a new component), we will not have tried any modifications to the other current component consisting of Operators 1 and 2.
Since the two current components of the boxed sub-algorithm differ, we should get different results from modifying the 'Operators 1 and 2' component than we would from modifying the 'Operators 3 and 4' one. 'That's all very well,' I hear you say, 'but how do I get Operators 5 and 6 to modify the 1 and 2 component without rewiring the odd Yamaha microchip or two?'
The answer is quite simple but, unfortunately, rather tedious! You exchange the two components by setting Operator 1 to Operator 3's parameters and vice versa and Operator 2 to Operator 4's parameters and vice versa. Now read that last sentence again, slowly!
Note that you can swap the envelope generator parameters by copying (using the orange STORE keypad) Operator 1's EG parameters to Operator 5 (since it's not in use), then 3's EG parameters to 1 and then 5's to 3 - you then do 2 to 5, 4 to 2, and 5 to 4. You then take two Aspirin and lie down in a darkened room!
The above really isn't too difficult, if you keep your head. If you save the dismembered SYN-CLAV 3 into a spare voice slot before you start the combined waltz and tango described in the last paragraph, then it won't be so bad if you mess something up in the middle. Another possibility is to start from a VOICE INIT and set the parameters you're interested in, in this case old Operator 1 as new Operator 3, 2 as 4, and so on, from a listing of the voice parameters which you have laboriously recorded by hand (aagh!) or your computer printed out for you in about 20 seconds...
While we're talking about moving Operator parameters around, we can look at some more algorithms which we'll be able to use whilst still starting from the (effect of) the boxed sub-algorithm.
Have a look at Figure 2. The first thing you'll notice is that none of the algorithms shown have our sub-algorithm as boxed in Figure 1.
Let's take a closer look. Algorithm 22 has some three quarters of our sub-algorithm in that Operators 1, 2 and 3 are connected correctly. Operator 4 has moved over to become a carrier rather than modulating Operator 3, but if we move Operator 4's parameters across to Operator 6, the sub-algorithm (shown boxed in Figure 2) consisting of Operators 1, 2, 3 and 6 is now the equivalent of 'our' sub-algorithm, so we can add Algorithm 22 to our repertoire.
Algorithm 19 isn't quite so helpful, as two sets of Operator parameters would need to be moved, ie. 4 to 6 and 3 to 4. Algorithm 23 is even more painful since four sets need moving, and this would probably represent more work than would be considered worthwhile. In both of these cases, you'd need to decide which of your two original components, Operators 1 and 2 or 3 and 4, would be given the opportunity of using the feedback loop. Note that Operators 4 and 5 can each substitute for the other, and that either could have been included in the box for both of these algorithms.
Finally in this section, let's consider Algorithm 21. The boxed sub-algorithm shown in Figure 2 is obviously not equivalent to 'our' sub-algorithm, but in other circumstances it could well be. If Operators 2 and 4 had essentially the same parameters - which they don't in SYN-CLAV 3 - then they could be replaced by the single Operator, in this case 3, which frees one Operator for further use. Operator 2 in this case corresponds to Operator 3 in 'our' sub-algorithm, of course.
OK, we've now discovered a considerable number of algorithms from which we can continue programming. The point of this exercise is to discover how to make the sounds we want by logically trying all the possible sub- and sub-sub-algorithms in sufficient combinations, thereby gaining the experience we need. With time, you should find you start to know instinctively which algorithm or sub-algorithm to try in order to add a particular component to a sound.
Now, if you think all this sounds a little tedious and complicated, you're quite right. Those of you with experience of analogue synthesisers have probably already followed a similar route with different hardware. Things are perhaps more complex this time but the results, as you well know from the Yamaha supplied pre-programmed voices, are definitely worth the effort.
Let's get back to the voice I wanted to make and start using some of the algorithms we've discussed. As a first example, I want to add a solid bass growl under the dismembered SYN-CLAV 3 sound. This is an attempt to emulate the combined sound of power chords on a guitar, with the root note of the chord played hard on a bass guitar. The technical description of the bass sound is Baarrrooom!
Listen to the two components of the current sound in turn by toggling first Operator 1 and then Operator 2 off. The Operator 1 and 2 sub-sub-algorithm is responsible for the high end, and the 3 and 4 component for the bass end. Since I want to fatten up the bottom end and get the baarrrooom effect, my first thought was to alter the harmonic content of the 3 and 4 component (or bass end) and set up some harmonic movement.
I chose Algorithm 13, for two reasons. First because no Operator parameter copying was required - lazyness rules OK! - and secondly (and of far greater importance at this stage in the proceedings), because our two spare Operators can both be used to modulate Operator 3 directly, which allows two simple and direct modifications to the sound that are essentially independent of each other. In other words, I tried to keep the confusion factor as low as possible!
There are, of course, umpteen different ways to proceed from this point. In Figure 3 you can see all the main parameters for the six Operators, with 1 to 4 as already discussed and 5 and 6 as I set them after a couple of minutes of playing around. Tastes differ, of course, and this sound may not be to yours, but I was quite happy with it for so little effort! Before we move on, let's be sure we know exactly what's happening here.
Operators 5 and 6 have different frequency values (2.00 and 3.75) so their frequency modulation effects will be different. In particular, Operator 6 at 3.75 - whilst distantly related harmonically to the fundamental pitch of the note - is so far removed as to give a quite dangerous tone, used at the start of the note (see Operator 6's envelope parameters) to give some 'bite'. To check out the effect of Operator 6, toggle it on and off in the usual fashion, and to hear it in splendid isolation, toggle off Operators 1, 2, 4 and 5: it sounds fairly bell-like when a single note is played but pretty grotty when played as chords!
Operator 5 is used to give some harmonic movement during notes and should remind you of the 'wah' sound in the cheap synth voice discussed in an earlier article. Again, you can hear what it does by toggling it on and off, and in isolation by toggling Operators 1, 2, 4 and 6 off.
The combination effect of 5 and 6 gives the Baarrrooom effect I wanted at the bass end of the chords. However, the same effect causes the notes above middle C to be too harsh and strident, and would also have messed up the effect of the overall amplitude envelope shape, leaving the notes fading out on a high buzzing sound which I didn't find particularly appealing, though you may think otherwise!
Keyboard Level Scaling (KLS) allows us to reduce or increase the effect of an Operator's output by 'squeezing' or 'expanding' the amplitude range of its envelope generator. We can say where we want the effect of KLS to start from in terms of its break point on the keyboard. You can see from Figure 2 that this is C3 for both of Operators 5 and 6. Both right curves are negative to compress the envelope shapes to the right of the break point and therefore reduce the effect by differing amounts, corresponding to the Depth values of 20 and 60, for Operators 5 and 6 respectively. These values were found by experimenting until enough of the modulation effect was lost from the treble notes. The choice between -LIN and -EXP is made in the same manner.
While trying to work my way toward the voice I could hear in my head (no - I'm not cracking up - I mean the Power Chords voice) I went on to try a selection of the algorithms shown in Figures 1 and 2. Sometimes by accident, a modification to a sound leads not towards the voice you're trying to find but in a totally different direction. I find this happens quite often when I'm attempting to use some sub-algorithm which I think will add a certain something to the current voice, and with a slight change of parameters something different and much better happens instead!
If this happens to you, don't be afraid to go off at a tangent and follow up the new effect to find out how it works - it may well be another useful effect to add to your FM repertoire! In the following example, I'd decided to use algorithm 6 to give an extra component to the SYN-CLAV 3 sound and I also wanted to investigate the effects possible with the feedback loop around both modulating and carrier Operator. As you will see if you compare the Operator 5 and 6 parameters from Figure 4 with the original dismembered SYN-CLAV 3 voice, hardly anything has changed except the frequency parameters.
Following a tip from Dave Bristow, I tried setting the carrier (Operator 5) to an inaudible fixed frequency so that you hear Operator 6's (the modulator's) frequency via the FM sideband effect. By experimenting (not forgetting the feedback loop) I ended up with the voice detailed in Figure 4, OTTATMOSPH (OverTheTopAtmosphere - well... you can't call every voice SYN-LEAD 56). The point here is that I haven't ended up with a Power Chords sound at all! - but try the bottom two octaves of the keyboard for a superb lead synth sound which I'm much happier about than the one I was trying to find!
If you own a DX9 rather than a DX7, some of the experimentation techniques discussed will still apply, though obviously you have fewer bits and pieces to play with. For all those people out there who've been asking for some clues on how to modify DX7 voices for the DX9, you may be able to convert, or at least approximate, some DX7 voices by considering sub-algorithms in the manner discussed in this article.
I'll leave you all madly experimenting until next month...
Formed only a few months ago, the DX Owner's Club has gone from strength to strength in that time and now has over 300 members within its ranks. Facilities offered include a quarterly newsletter and discount prices on DX-related equipment, in conjunction with Yamaha and several other manufacturers. For further details, write to Tony Wride, DX Owner's Club, (Contact Details).
Feature by Jay Chapman
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!