Howdy,

I have a bit more on the Adlib patches. They may or may not be quite right
yet [1], but this is a very definite improvement over last time. [2]

The first 13 bytes of operator 1 are stored first, then the first 13 bytes
of operator 2, then operator 1's waveform, then operator 2's waveform. The
algorithm and feedback fields, which are channel settings, are only valid
in the first operator. Also, the sense of the algorithm field is switched:
0 means that the two operators are in synthesis while 1 means operator 1
modulates operator 2.

So a complete instrument goes a little something like this (each field is
one byte):

op1 key scaling
op1 frequency modulation
channel feedback
op1 attack rate
op1 sustain level
op1 envelope generator
op1 decay rate
op1 release rate
op1 amplitude
op1 amplitude modulation
op1 vibrato
op1 keyboard scale rate
algorithm (reversed)
op2 key scaling
op2 frequency modulation
unused/unknown
op2 attack rate
op2 sustain level
op2 envelope generator
op2 decay rate
op2 release rate
op2 amplitude
op2 amplitude modulation
op2 vibrato
op2 keyboard scale rate
unused/unknown
op1 waveform
op2 waveform

Cheers,
Ravi.

[1] I can't play many of the songs I extracted from Camelot without
wincing, but the quick-and-dirty test player isn't really up to the task.
But that's your job ;)

[2] In my own defense, the driver does translate patches into that format
before sending them to the Adlib.

Reply via email to