Courtesy to The Usual Suspects’ reverse engineering work, documented in https://www.youtube.com/watch?v=XM_q5T7wTpQ&t=1601s
int24_t saw[7] = {0};
const int24_t detune_table[7] = { 0, 128, -128, 816, -824, 1408, -1440 };
int24_t next(int24_t pitch, int24_t spread, int24_t detune) {
int24_t sum = 0;
for (int i = 0; i < 7; i++) {
int24_t voice_detune = (detune_table[i] * (pitch * detune)) >> 7;
saw[i] += pitch + voice_detune;
if (i == 0)
sum += saw[i];
else
sum += saw[i] * spread;
}
return high_pass(sum);
}