Why does the EMU8000 limit you to 30 voices of polyphony when playing RAM sound?
Why does the EMU8000 require redundant samples after end loop points?
Dave Rossum, Chief Wizard of the Tech Center and EMU8000 co-designer gives
you the REAL answer!
The EMU8000 uses E-mu's patented multipoint interpolation algorithm to provide minimal pitch shifting artifacts during wavetable synthesis. The use of multipoint interpolation puts more severe constraints on waveform memory bandwidth, and consequently requires more careful use of this resource. This has implications on refresh, looping, and downloading. A brief discussion on interpolation is first in order. When the pitch of a waveform is shifted in wavetable synthesis, the number of output sample points for each input sample point is changed. Without pitch shift, there is one output sample point for each input sample point, but when pitch is shifted there can be many more than one (or even fewer than one) output sample point for each point in the original waveform stored in memory.
These new sample points actually should be the values at which the original analog waveform would have been, had it been sampled at the playback rate. In other words, the correct computation should reconstruct the original analog waveform for each output sample.
Unfortunately, such a computation would be far too complex to carry out for each audio channel for each output sample point. Simplifications must be made. The most extreme simplification is just to use the closest input point -- that is do no computation at all. This, as you might expect, sounds awful.
The next simplest thing is to pretend that the original analog waveform was a set of straight lines between the sample points -- a sort of connect the dots called linear interpolation. This actually works quite well on low frequency sounds, but fails miserably when the sound has much high frequency energy.
The E-mu algorithm uses a number of surrounding points (four in the case of the EMU8000) to construct a curve of best audio fit between the original sample points. You can see how we do this by looking up U.S. patent # 5,111,727. Unfortunately, this means the EMU8000 must operate with a waveform memory bandwidth twice that of a synthesizer using linear interpolation.
If you work things out, you'll find that for 32 channels of four point interpolation at 44.1 kHz, a 177 nsec memory cycle time is required. This might not seem to bad these days, but remember that the waveform memory is usually secondary memory which should be cheap and relatively small. Getting a 177 nsec cycle time in-system with 80 or 90 nsec DRAMs is not easy. Fortunately, the fact that the sample points for interpolation are adjacent in memory comes to our rescue.
This means that a page mode access can be frequently used, which substantially reduces the memory cycle time for the four adjacent accesses, and makes 32 channel 4-point interpolation feasible on a low cost system. Because the four points are adjacent, they can cross at most one page boundary. This means only two pages must be accessed during any four-point interpolation operation. The page boundary could be crossed between any sample pair, so sometimes the access will be 1-3, sometimes 2-2, and sometimes 3-1 with respect to what's on the first page as opposed to the second.
However, a particular problem arises. If a waveform loop end just happens to occur at one point beyond the end of a page, and its loop just happens to be of a size so that its loop start occurs one point below a page boundary, then during interpolation of the loop all four samples could occur on different pages. And the law of averages won't help; the loops for all 32 channels could possibly line up.
Such a situation must be prevented. This could be done by requiring special rules when locating samples in memory, but that seemed like a bad idea. Instead, since it is necessary in any good sounding loop for the audio to be continuous and smooth in both value and all derivatives, it can be assumed that the audio is continuous around the endpoints and therefore samples beyond the loop end can be used. The same assumption is actually made in most linear interpolation systems, but since the window size is only two, it is generally not noticed. The other item which becomes problematical due to the memory bandwidth issue is DRAM refresh.
Internally, the EMU8000 is pipelined for its 32 channels, and the memory access as shown above is mapped so each channel gets exactly 1/32 of the computational and memory bandwidth resources. Refresh is a loose end; it requires memory bandwidth but no computation.
Our design choice was to make the system pipelines asynchronous (the channel gets 1/32 of the computational bandwidth, but some lesser fraction of memory bandwidth), to waste some computational bandwidth (each channel gets 1/34 of both resources), or find some other solution.
We chose instead to have channels which are devoted to ROM or FM sample rate conversion perform the refresh function. This means in the case of a DRAM-only sound we have to devote a channel bandwidth to the refresh function. This means DRAM-only users lose 3% of the chip functionality, but since ROM and FM users (who we estimated would be the majority) lose nothing, it seemed the best tradeoff. For some reason, when we designed the chip we only had a ROM/FM channel perform one refresh cycle, when in fact there is bandwidth for two.
So to fully meet refresh specs of most DRAMs, two channels are needed (oops). That's a mistake on our part. If anybody cares, it would probably work fine with just one refresh channel.