Gravis Ultrasound: The Hardware Mixer
No More DMA Clicking
In the early 1990s, the “Sound Blaster” standard was king. But technically, it was a brute. To play digital audio on a Sound Blaster (especially the earlier 8-bit models), the CPU had to do all the heavy lifting. If you wanted to play a MOD file (music with 4 separate instrument tracks), the CPU had to:
- Read samples from 4 different locations in RAM.
- Scale the volume of each sample.
- Resample them (change the pitch) to match the output rate.
- Add them all together.
- Clip the result so it didn’t overflow 8 bits.
- Send it to the audio card.
This process, Software Mixing, consumed massive amounts of CPU cycles—often 20% to 40% of a 386’s power. It also sounded “crunchy” because of the low-quality mathematical resampling.
Enter Advanced Gravis and their champion: the Gravis UltraSound (GUS).
The GF1: A Sound Card with a Brain
The heart of the GUS was the GF1 chip. Unlike the “dumb” DAC on a Sound Blaster, the GF1 was a hardware wavetable synthesizer. Crucially, the card had its own onboard RAM (256KB standard, expandable to 1MB).
How It Worked
Instead of the CPU mixing the audio stream, the process was:
- Load: The game/demo uploads instrument samples (Guitar, Drum, Piano) into the GUS’s onboard RAM.
- Command: The CPU sends tiny commands to the GF1 ports: “Voice 1: Play sample at address 0x1000, pitch 440Hz, volume 50%.”
- Forget: The CPU goes back to running the game. The GF1 handles the playback, mixing, and pitch shifting in hardware.
The GF1 supported up to 32 simultaneous hardware voices. This meant zero CPU load for mixing. Suddenly, demos and games could run faster and sound better.
Linear Interpolation
The other killer feature of the GF1 was Linear Interpolation. When you slow down a digital sample to lower its pitch, you have to “stretch” the data.
- Sound Blaster (Nearest Neighbor): It simply repeated the sample bits:
10, 10, 20, 20. This created metallic ringing artifacts (aliasing). - GUS (Linear Interpolation): The hardware calculated the smooth path between points:
10, 15, 20, 25.
This gave the GUS a warm, smooth, “CD-quality” sound that was startlingly different from the gritty Sound Blaster output.
The Software Architecture
The GUS wasn’t hardware compatible with AdLib or Sound Blaster. It didn’t have an OPLFM chip. To run standard DOS games, users had to load a TSR (Terminate and Stay Resident) program called SBOS or MEGAEM.
These programs used the PC’s NMI (Non-Maskable Interrupt) to trap calls to the Sound Blaster ports and translate them on-the-fly into GUS commands. It was a technical marvel, but it was glitchy and consumed RAM.
For native support, developers had to use the UltraSound GF1 SDK.
The “Patch” format (.PAT) became the standard for instruments. A patch file contained the raw sample data plus metadata about loop points, envelopes (ADSR), and base frequencies.
Code Concept: Firing a Voice
Directly programming the GUS involved writing to I/O ports 0x2x0, 0x2x8, 0x2x9, etc.
// Pseudo-code for triggering a GUS voice
void gus_play_voice(int voice, int address, int freq, int volume) {
outp(GUS_PORT_SELECT, voice); // Select one of the 32 voices
outp(GUS_ADDR_LOW, address & 0xFFFF);
outp(GUS_ADDR_HIGH, address >> 16);
// Frequency is a complex calculation based on the # of active voices
int freq_value = calculate_gus_freq(freq);
outp(GUS_VOICE_FREQ, freq_value);
outp(GUS_VOICE_VOL, volume << 4); // Ramping volume
outp(GUS_VOICE_CTRL, 0x01); // Start playback bit
}
The Demoscene’s Love Affair
While the mass market stuck to the “safe” Sound Blaster 16, the Demoscene adopted the GUS as their standard. The legendary demo “Second Reality” by Future Crew (1993) begins with a text screen explicitly recommending a Gravis Ultrasound for the best experience. The soundtrack, composed by Skaven and Purple Motion, utilized the hardware mixing to create a dense, symphonic score that was simply impossible on other cards of the era.
If you hear a MOD file from 1994 that sounds exceptionally clean, with resonant strings and crisp drums, you are likely hearing the ghost of the GF1.
The End of the Line
The GUS eventually faded. The “Interwave” (GUS PnP) was a superior successor, but Creative Labs crushed the market with the AWE32 (which added inferior, but compatible, wavetable synthesis). Finally, the rise of powerful Pentium CPUs meant software mixing was no longer a burden, and the need for dedicated hardware mixing vanished.
But for a brief window in the mid-90s, the Red Card was the ultimate status symbol for the PC audiophile.