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.
