<skip>
If we really try to made Munt "more accurate" as this topic promises, we must fully understand what exactly we trying to emulate.
Munt team's concept of producing synth waves is based on subtractive synth model. Although, on the Net you can easily find statements that the h/w is NOT really has a filter. Let's review some:
1. Louisg writing on this very forum MT-32 filter and waveform generator
2. http://homepage.mac.com/synth_seal/html/mt32b.html also saying about this however not in detail.
3. Interesting thoughts on the problem is http://music.columbia.edu/pipermail/music-dsp … ary/068385.html about implementation of D-50 filter. MT-32 must have the same but simplified LA engine in it.
All of this does not gives any ideas on Munt development though. Only that the model is not quite correct. But we can change the model anyway to be more precise. So my considerations are:
- Of course, there is no any filter in the h/w, neither analog nor digital. Early Roland's models have analog filtering, but D-50 (and MT-32) are all-digital. And there is no h/w resources needed to implement proper filtering. Remember, it was 1987 and memory was really costly, that is why Roland not made D-50 pure sampler (ROMpler). The Munt CVS code provides about 7 Megs of IIR filter coefficients. Even early release incorporates table about 250 KB of data not counting of that wavecache. Real-time computing of the coefficients as well as implementation of FIR filter MT-32 h/w simply does not afford.
- Reading the UG of D-50 it can be seen that filtered wave is symmetrical on slopes. This can only be achieved using FIR (too slow for 1987) or by bi-directional IIR filter (process data buffer forward, and then reversed). Latter is also slow and memory hungry as said above.
- H/w strictly requirements lead to think of another synth’s WG implementation. It can be waveshaping, phase distortion or even wavetable synthesis.
- I don't think there is a some form of CZ’s phase distortion implemented. Moreover, this one is patented by Casio.
- When comparing waveshaping and wavetable synthesis I do not see any advantages of the former but simpler implementation of the latter.
So, concluding all the above, we can simply implement wavetable synthesis model with sampled (or resembled) waves of the h/w. Researching WG with 4-stage low-pass filter (according to D-50 UG) I've noticed that the shape of a waveform is mostly determined by the cutoff frequency to wave frequency ratio. This is exactly what the MT-32 cutoff points are.
Therefore, wavetable can consist of the waveshapes sampled (generated) at the mastertune frequency for various cutoff points (0..100). The size of that table can be 6400 samples for 64 frames per table row. For 16-samples it is only 12,800 bytes. And it can easily fit to microcontroller's memory. Playback further is done by pitch variation in the same way as for PCM samples.
As for the resonance, it is more likely implemented in CZ’s way by adding decaying sinusoid and varying amp levels of both signals when mixing. Firstly, and more precisely in terms of emulation, we can add the resonant point to the wavetable. It therefore grows up to 12,800 * 30 = 384,000 samples, but, hey, we are not deal with a microcontroller.
<skip>