Gravis Ultrasound audio synthesis --------------------------------- (update 1) It is easier to find the Holy Grail than to find a text describing precisely what synthesis method the GUS uses, so it's time i take a shot at it. For this text i have searched thru ftp archives troughout the world, have asked info from Ensoniq, Roland, TurtleBeach, Advanced Gravis, Forte Creative Labs and i also took into account the numerous comments, praise and flames i received to model the text. Since this text is a result of a collective internet and industry wisdom, flames will go the way of /dev/nul. And please, read the text carefully, because i have received some comments from people who were thinking i wrote something when in fact i wrote the opposite (particularly from non anglophones). You probably have heard about the GUS beeing a wavetable soundcard. I have received some comments that the GUS is not such a thing, but since the industry uses this term (i.e. CL waveblaster, GUS, TB multisound etc...), i am not in a position to create confusion by renaming the technology. Wavetable explains perfectly what it is. A table containing a waveform. The GUS uses the third generation of wavetable synthesis, so before i start explaining it, i'll talk about the first two generations first. The first generation of wavetable synthesis was actually a _digitally_ controlled _analog_ oscillator(s) where parameters controlling the waveform were kept in memory. The curtis based synths and some others are directly derived from this concept. The second generation of wavetable synthesis uses a digital oscillator, with the waveform held in memory in it's basic form (one period usually). Parameters to alter the oscillator behaviour are also in memory. I use the general term "memory" instead of RAM, because in some case it's actually ROM, FlashROM, PROM, EPROM, switches, buffers etc... The Ensoniq chip found in the Macintosh Plus is an example (8 bit, 4 oscillators, 4096 byte wavetable). The third generation of wavetable synthesis which can be found in two flavors (RAM or ROM) is based on the second generation, but uses bigger wavetables to hold the waveform (either in single period or multi period format) including this time the attack and release. In this section, i will focus only on the GUS implementation, which basically encompass all other implementations. Basically, what you have are 32 oscillators which can do the exact same thing, and be programmed separately and/or simultaneously. What the hardware can do without the operating system is not too important here since we are looking at what the GUS _can_presently_do_ (with modifications to the OS, the GUS could do pretty much any synthesis method one can dream up), not what it would have done if the OS wasn't available. Of course, more processing done in hardware means more CPU cycles left for other things. So in the GUS, you have some RAM (up to 1Mb) that holds 1, 2, 3, etc, wavetables which consist of a sampled (or soft-synthesised) waveform, some parameters and optionally a sampled attack and release. The GF1 chip (an asic based on the Ensoniq DOC-II chip) will then playback a waveform when triggered based on some parameters it is given, and on others it will fetch from the wavetable. I dont know if all parameters can be fetched from RAM by the GF1, nor if the GF1 can fetch some instructions from RAM, but by using the current OS built in the windows drivers or in the DOS library, this is what the GUS _can_presently_use_ to synthesise music: - sampled or envelopped attack in 8/16 bit, signed/unsigned format * - sampled waveform (anything! a period, or a several seconds sample) * - sampled or envelopped release * with: - velocity (volume) * - panning (balance) * - precise frequency playback rates (with frequency based antialiasing and oversampling) * - mixing of all the channels * Up to here, it's sample playback. But there is more: - full vibrato (FM, depth, rate, sweep) - full tremolo (AM, depth, rate, sweep) - LFO (Low Frequency Oscillator) * - forward, reverse, dual direction looping or no looping * - the loop points can be anywhere (for sampled attack and release) * |-------|-------------|--------------| Start Start loop End loop End - 6 point enveloppe - tuning * - fractional endpoint * - combination of oscillators (up to 4 if the GF1 implementation is the same as Ensoniq) * - previous waveform usage * And more recently: - 3D (focal point 3D positioning) * indicates that the operation is done in hardware. Some others may be done in hardware but i have not done any tests or found any technical information to confirm it. I also base 1 item on the DOC II capability, which should be implemented in the GF1. Also, reverb, flanger, phasing etc... could be easily implemente within the drivers. Presently it can be done with a little work on the patches and/or midi timestamp (i have succesfully made flanger and phasing). Another thing that could be implemented is dynamic patch loading since the card supports it (i have done it). You can even get a distorted sound (ideal for guitars, vox, analog synths) by simply changing the 2's complement flag (work best with soft-synthesised patches). Last, it is far better to have a RAM wavetable synth than a ROM one, since you can upload your samples. Even sound canvas owners (and other synths too) complain that their ROM based GS synth lacks interesting drum and bass sounds, cannot play sound effects, and is not usable for dance and techno. Also you can have more space for each samples, because you always have only the samples you need in memory, so you can have better sampling rates and better waveforms. Ciao, -- Francois Dion ' _ _ _ CISM (_) (_) _) FM Montreal , Canada Email: CISM@ERE.UMontreal.CA (_) / . _) 10000 Watts Telephone no: (514) 343-7511 _______________________________________________________________________________ Audio-C-DJ-Fractals-Future-Label-Multimedia-Music-Radio-Rave-Video-VR-Volvo-...