René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -

Csound dx7 emulation

Thanks to the work of Sylvian Marchand and Russel Pinkstone, the famous dx7 can be emulated.
Note, however. I had a problem with the downloaded c file: As the suffix was .C, gcc assumed it to be a c++ file and refused to compile it. I had to change the file suffix to a .c.
I have written a little batch converter to convert all possible patches.

About the dx7

Oscilllators (Operators)

The dx7 has 6 oscilllators (which are called operators by Yamaha). Each of these can either function as a carrier or a modulator.
One operator in each of the 32 algorithms has its output fed back to its (or another operator's) input. This is the feedback operator. The level of feedback can be set in the range of 0-7. Increasing feedback usually generates more noise.

Operator parameters

The following parameters can be set for an operator:
  • amplitude (lvl)
  • velocity (vel)
    Amplitude sensitivity (how much strength with which key was pressed affects amplitude) ????
  • Envelope generator
    Creates an envelope. Needs 8 parameters: rate1 through rate4 and level1 through level4.
    The ratex parameters determine how long it takes to reach levelx.
  • ams
    ????, most probably not used
  • mode
    Either 0 or 1. If 0, the oscillator operates at key pressed * freq. If 1, oscillator operates as freq no matter what key is pressed.
  • Frequency (freq)
    Meaning depends on mode. Frequency can further be detuned by det
  • Detune (det)
    Detunes the frequency of the oscillator
    Range: -7 to 7.
    Unclear what the unit is
  • Rate scaling(rss)
  • Scaling
    The base amplitude (frequency) can be different for low pitches than for high pitches.


There are also 32 predefined algorithms. An algorithm is a layout of the 6 oscilllators.