15 September 2026
Converting Reality Adlib Tracker (RAD) to WAV: 9-Channel OPL2 FM Synthesis
Converting Reality Adlib Tracker (RAD) to WAV: 9-Channel OPL2 FM Synthesis
In the mid-1990s, when PC soundcards were shifting toward sample playback, MS-DOS demoscene musicians celebrated the raw mathematical purity of frequency modulation chiptunes. The Reality Adlib Tracker (RAD), written by Reality (Jan Kiszka), was one of the most revered tools for composing multi-channel songs using the legendary Yamaha YM3812 (OPL2) sound chip.
Today, RAD modules are historical artifacts of computer music history. In this guide, we analyze the binary structure of .rad files and how convrtr emulates 9-channel 2-operator FM synthesis directly in your browser to render 16-bit stereo WAV audio.
1. The AdLib YM3812 (OPL2) FM Sound Architecture
Unlike sample-based formats like MOD or XM that rely on pre-recorded PCM audio data, RAD songs store zero audio samples. Instead, all sounds are synthesized mathematically in real time by modulating carrier sine waves with modulator sine waves:
s(t) = Ac(t) * sin(2 * PI * fc * t + Im(t) * sin(2 * PI * fm * t))
Where:
fcis the carrier frequency calculated from musical pitch.fmis the modulator frequency determined by the harmonic multiplier.Ac(t)is the carrier amplitude governed by an ADSR volume envelope.Im(t)is the modulation index controlling timbral brightness and harmonic richness.
Because only register numbers and note events are stored, a complete three-minute song typically occupies just 4 KB to 12 KB on disk.
2. RAD Binary File Layout
A valid .rad file starts with a 16-byte ASCII signature followed by global playback parameters and instrument tables:
| Offset | Length | Description |
|---|---|---|
| 0x00 | 16 bytes | Magic string (RAD by REALITY or RAD by Reality!!) |
| 0x10 | 1 byte | Format version (0x10, 0x11, 0x20, 0x21) |
| 0x11 | 1 byte | Default speed (ticks per row, typically 6) |
| 0x12 | 1 byte | Number of instruments (1 to 64) |
| 0x13 | Variable | Instrument definitions (11 bytes OPL2 registers + optional name) |
| Next | 1 byte | Number of orders in playback sequence |
| Next | Variable | Order list (pattern indices) |
| Next | Variable | Pattern event stream (64 rows x 9 channels) |
3. Emulating OPL2 FM Synthesis in Pure TypeScript
To convert .rad into standard PCM WAV audio in the browser without plugins or native binaries, convrtr runs a lightweight OPL2 digital signal processing loop:
- Pitch Calculation: Converts tracker note semitones into frequency in Hertz using standard equal temperament:
const freq = 440 * Math.pow(2, (midiNote - 69) / 12); - ADSR Envelope Generator: Computes instantaneous attack, decay, sustain, and release levels for each operator on every audio sample.
- Phase Accumulator: Advances carrier and modulator phases by angular frequency step
(2 * PI * f) / sampleRate. - Channel Panning & Soft Clipping: Pans the 9 independent FM voices across a wide stereo field and maps floating-point amplitudes into 16-bit signed linear PCM values (
-32768to+32767).
4. Converting RAD to WAV Online with Zero Uploads
With convrtr, you can listen to and preserve your vintage AdLib chiptunes instantly:
- Drag your
.radfile onto RAD to WAV. - Customize the output sample rate (up to 48,000 Hz) and stereo separation percentage.
- convrtr synthesizes all 9 OPL2 channels in memory and generates an uncompressed 16-bit WAV file ready for playback and archival.
Related reading
Converting FastTracker II XM Chiptune Modules to WAV: Architecture and Synthesis
Explore the forensic format of Triton FastTracker II Extended Modules (.xm). Understand 32-channel pattern matrices, linear pitch tables, delta sample compression, and client-side WAV rendering.
Converting Scream Tracker 3 S3M Modules to WAV: Architecture and Synthesis
Examine Future Crew's Scream Tracker 3 (.s3m) format. Learn how 32-channel bit-packed note patterns, 16-bit paragraph sample offsets, and Gus/OPL panning are synthesized into 16-bit linear PCM WAV.
Converting Impulse Tracker IT Modules to WAV: Architecture and Synthesis
Explore Jeffrey Lim's Impulse Tracker (.it) format. Learn about 64-channel matrix structures, C5Speed frequency tables, sample compression, and client-side WAV rendering.
Converting PolyTracker (PTM) to WAV: 32-Channel DOS Game Chiptune Synthesis
Explore Carlos Hasan's PolyTracker PTMF architecture. Learn how 32-channel panning tables, 16-bit PCM samples, ping-pong loops, and tracker synthesis render into CD-quality WAV in browser memory.
Converting Farandole Composer (.far) to WAV: 16-Channel DOS Tracker Synthesis
Dive into Daniel Potter's 1994 Farandole Composer module format. Discover how 16-channel pattern cells, 8-bit PCM samples, custom panning tables, and real-time chiptune synthesis render into pristine 16-bit WAV audio.
Converting Composer 669 (.669) to WAV: 8-Channel DOS Tracker Synthesis
Explore Tomasz Pytel's 1992 Composer 669 tracker format. Learn how 8-channel pattern matrices, 108-byte song messages, 8-bit unsigned PCM waveforms, and software mixing synthesize into clean 16-bit stereo WAV.
Converting AMF Tracker Modules to WAV: Advanced Module Format Audio Synthesis
Dive into Otto Chrons' Advanced Module Format (AMF) and ASYLUM tracker architecture. Learn how 16-channel DOS module tracking and 8-bit PCM software mixing render into studio-quality WAV audio.
Converting DSM Tracker Modules to WAV: RIFF DSMF Multi-Channel Audio Synthesis
Explore DSIK's Dynamic Studio Module (DSM) tracker architecture. Learn how RIFF container chunks, 16-channel pattern matrices, and 8-bit PCM samples synthesize into 16-bit stereo WAV.
Converting Oktalyzer (OKT) Modules to WAV: Amiga 8-Channel Chiptune Synthesis
Explore Armin Sander's legendary Amiga Oktalyzer (.okt) tracker format. Learn how 8-channel software mixing on the 4-channel Paula sound chip is rendered into studio WAV audio.
Converting MultiTracker (MTM) Modules to WAV: 32-Channel Track Matrix Synthesis
Discover Daniel Gold's Renaissance MultiTracker (.mtm) format. Learn how 32-channel track matrix sequencing, volume panning, and 8-bit PCM samples synthesize to 16-bit WAV.
Converting id Software IMF Audio to WAV: Yamaha OPL2 FM Synthesis in the Browser
Dive into id Software's IMF music format from Wolfenstein 3D and Commander Keen. Learn how Yamaha YM3812 FM register bytes synthesize into 16-bit stereo WAV audio.
Converting HMI DOS Game Audio to WAV: Emulating 1990s PC Soundtracks
Explore Human Machine Interfaces (HMI) MIDI audio from Descent, Warcraft II, and Mortal Kombat. Learn how multi-track game sequences synthesize into 16-bit stereo WAV.
Converting AdLib ROL Music to WAV: Emulating 1980s PC FM Synthesis
Discover AdLib Visual Composer (.rol) music from the pioneer era of PC audio. Learn how Yamaha YM3812 (OPL2) FM synthesis converts to 16-bit stereo WAV.
Converting Miles Sound System XMI to WAV: 1990s PC Game Soundtracks
Discover Miles Sound System Extended MIDI (.xmi) audio from Wing Commander, Ultima, and Theme Park. Learn how IFF XMID sequences convert to 16-bit stereo WAV.