Could anyone give me a quick guide on what the various functions of the bristol dx7 does? I can't seem to figure some of them out, such as how the attack affects the L1 and L2 knobs or what the L1 and L2 knobs do? Same for the LFO, and the 2 buttons beside it (the buttons obscure what should be read underneath them.)
I have looked at the DX7 manual online, but I didn't find it too helpful. :/
The README may be a bit out of date on the FM/DX implementation, here are some more up to date notes.
Firstly just the parameters you asked about: L1 and L2. The envelope has seven stages. It goes from 0 to up L1 at the at the first attack rate, and when it reaches L2 it will tend to L2 at the second attack rate. When it reaches L2 it will tend towards sustain at the decay rate, then final release with the key press. If you release anyway in the early cycle, ie, before sustain it will also tend to zero at the release rate.
Each of the six operators have this envelope across the top. Across the bottom they have controls for touch response, a gain applied to the input (modulator) signal and gain applied to the output (fm) signal. Tune and transpose do the normal things. The LFO button will lower the frequency response by a couple of octaves and remove keyboard frequency tracking. IGC selects whether the input gain will track velocity and OGC whether the output gain tracks key velocity. Finally there is a pan control however it only operates on the operators that feed to an audio output. This is discussed below, some of the algorithms have operators that just modulate other operators so pan does not apply to them.
The algorithms: bristol implements 24, they should be the original ones. They give the order in which the operators are called and whether their outputs are modulation signals or audible outputs. Only the operators at the very bottom of the schematic are fead to the outputs.
And that's it. Ok, that is a pretty limited explanation of how FM synthesis works, in fact it is no explanation. It goes something like this:
If one operator is set to LFO and the selected algorithm uses it as a modulator signal into another operator then it has a simple frequency modulating LFO effect - a bit like vibrato. If you deselect LFO then what you are actually doing is feeding one audible signal, with key tracking, into another audible signal and you get the characteristic Frequency Modulation effects that enrich the otherwise simple sine waves. If you select this complex wave to then itself modify yet another wave the content becomes something between interesting (at low gain levels) to wild (at high gain levels). You can mix multiple operators together to give even more complex modifier signals and as you can control the output gain levels of each of them and they have an independent ADSR you can build very complex waveforms.
There are a few areas where the bristol algorithm differs from the original. There is no noise source. None of the operators can modify themselves (in mark-1 DX allowed this on operator 1 only.
The author is considering emulating the two Yamaha chips that were implemented by the original synth for a more authentic sound. One of the chips generated the envelopes, the other generated the waveforms, all digitally. There are some interesting possibilities here where an integer model should give some of the 'breezy' and quite amiable noise/distortion of the DX-7 and a floating point version a clean signal more like the selective DX-1 (which was actually DX-7 in a box with chips selected for their cleanliness.
It is not easy to suggest where to start with sound creation on this emulator and very few people even considered attempting to program the original - it was a monstrous operation due to the data entry methods (fixed only on the DX-1), few people understood what was actually going on inside the box but it had an amazing set of factory sounds to compensate for the gruesome interface.
I am not sure where to start with programing this stuff. Try algo 1, put all the output gain to zero, input gain to zero, pan to 'mid'. Bring up the gain on operator 4 - an output operator and you should then get a pure sine wave on output when you press a key, modulated by the ADSR for that operator. If you set operator #1 to LFO, reduce the transpose, give it some output signal and give op4 some input gain you should get some vibrato from op4.
Now if you change op1 to be audible, play with its gains, detune it, then op4 will start giving you bell tones from having its frequency modulated by another audible frequency.
Another option is to look at algorithm 24. This just gives you 6 output signals, with tuning an envelope control this is almost fourier synthesis or hammond organ stuff. Algorithm 24 gives you 5 audible operators and one modulator for vibrato and leslie type effects - pan the audible operators left and right by different amounts and change their input gain control by different amounts - operator 1 will now give each of them different vibrato to build some movement into the sound.
Hope that helps a bit.