Skip to content

🔥🔥🔥 You are viewing a development version of the website. Things will blow up. 🔥🔥🔥

Regular users, please follow the exit signs.

# General MIDI

General MIDI (GM) was introduced in 1991 to solve a simple but annoying problem: MIDI could tell a synthesiser what notes to play, but not which instruments to use. GM standardised the instrument assignments — program number 1 is always an acoustic grand piano, program 41 is always a violin, and so on — so that music written for one GM device would sound recognisable on any other.

The Roland SC-55, released the same year, was the first Sound Canvas module and quickly became the de facto standard for DOS game music. Roland’s own GS (General Standard) extension sat on top of GM, adding extra instruments, percussion kits, and digital effects while remaining fully backwards-compatible with the core GM specification.

Most DOS game composers wrote and tested their music on Roland Sound Canvas hardware. Games like Monkey Island 2, Ultima VII, Doom, and Duke Nukem 3D all sound their best when played through an SC-55 or a compatible device. Since different GM manufacturers recorded their own instrument samples, playback can sound noticeably different from one device to another, but the SC-55 is the gold standard for what the composer intended.

## The MT-32 to General MIDI transition

MIDI sound in DOS games evolved through three distinct periods:

- 1987–1991: MT-32 era — The Roland MT-32 was the only MIDI option. Sierra On-Line, LucasArts, and Origin Systems led the way with dedicated MT-32 music.
- 1991–1993: transition — The SC-55 and General MIDI standard arrived. Many games supported both MT-32 and GM, giving players a choice. Games like Indiana Jones and the Fate of Atlantis and Star Wars: X-Wing sound excellent on either device.
- 1993 onwards: GM dominance — General MIDI became the standard. MT-32 support faded as the SC-55 was cheaper, more widely available, and standardised. By 1995, very few new games included MT-32 support.

Notable games with General MIDI support

- Day of the Tentacle (1993)
- Descent (1995)
- Doom (1993)
- Duke Nukem 3D (1996)
- Full Throttle (1995)
- Gabriel Knight (1993)
- Monkey Island 2 (1991)
- Sam & Max Hit the Road (1993)
- Star Wars: Dark Forces (1995)
- Star Wars: TIE Fighter (1994)
- System Shock (1994)
- The Dig (1995)
- Ultima VII (1992)
- WarCraft II (1995)

Determining whether a game supports General MIDI, the Roland MT-32, or both is not always obvious from the setup utility alone. The community-maintained List of MT-32-compatible computer games on the VOGONS Wiki is the most comprehensive reference for which MIDI devices each game supports and which produces the best results.

For a more detailed introduction to MIDI and its role in DOS gaming, see the MIDI overview.

The Yamaha DB50XG and MU-series (MU50, MU80, MU100, etc.) are alternative MIDI modules that offer excellent SC-55 compatibility with a more modern and punchy sonic character. Many enthusiasts prefer them to the SC-55 in certain games. For a detailed comparison of how these modules stack up against the SC-55, see this article.

DOSBox Staging offers two main ways to get General MIDI playback:

## Sound Canvas emulation

For the most accurate SC-55 reproduction, DOSBox Staging supports Roland Sound Canvas emulation via the Nuked SC55 CLAP audio plugin. This provides sample-accurate playback of the actual SC-55 sound engine — as close to the real hardware as you can get without owning one.

### Sound Canvas setup

To enable Sound Canvas emulation, set the MIDI device and place the required ROM files:

    [midi]
    mididevice = soundcanvas

Download the SC-55 ROM files from here, unpack the ZIP archive, then move the contents of the `Nuked-SC55-Resources/ROMs/` folder into the `soundcanvas-roms` directory inside your DOSBox configuration folder:

Platform | ROM directory
--- | ---
Windows | `C:\Users\<USERNAME>\AppData\Local\DOSBox\soundcanvas-roms\`
macOS | `~/Library/Preferences/DOSBox/soundcanvas-roms/`
Linux | `~/.config/dosbox/soundcanvas-roms/`

This is what the contents of `soundcanvas-roms` should look like:

    soundcanvas-roms
    ├── SC-55-v1.10
    │   ├── sc55_rom1.bin
    │   ├── sc55_rom2.bin
    │   ├── sc55_waverom1.bin
    │   ├── sc55_waverom2.bin
    │   └── sc55_waverom3.bin
    ├── SC-55-v1.20
    │   ...
    ├── SC-55-v1.21
    ...

You can also set a custom ROM directory via the `soundcanvas_rom_dir` setting.

Note

Sound Canvas emulation is CPU-intensive. You’ll need a mid-range or better desktop-class CPU from the last 5–7 years for glitch-free playback. If your system struggles, FluidSynth with a good SoundFont is a lighter alternative.

Tip

You can switch between Sound Canvas models on the fly by changing the `soundcanvas_model` setting — no restart needed.

## Sound Canvas revisions

The SC-55 went through several firmware revisions. The most important difference is Capital Tone Fallback (CTF) — a Roland GS feature that ensures correct instrument playback when a game requests a GS “variation tone” that isn’t available on the module. Without CTF, the module may play silence or the wrong instrument. Many DOS games rely on CTF for correct audio, particularly for percussion and instrument variations.

Due to a patent dispute with Yamaha, Roland was forced to remove CTF from later firmware revisions. This makes the choice of firmware version significant for DOS gaming.

DOSBox Staging emulates the following Sound Canvas firmware versions:

Model | Version | `soundcanvas_model` | CTF | Notes
--- | --- | --- | --- | ---
SC-55 | v1.00 | `sc55_100` | Yes | First release; some instrument mapping bugs
SC-55 | v1.10 | `sc55_110` | Yes | Bug fixes
SC-55 | v1.20 | `sc55_120` | Yes | Corrected instrument #122; GS reset
SC-55 | v1.21 | `sc55_121` | Yes | Fixed NRPN processing bugs — recommended
SC-55 | v2.00 | `sc55_200` | No | CTF removed (Yamaha patent dispute)
SC-55mk2 | v1.00 | `sc55mk2_100` | No | 28 voices, 354 sounds; no CTF
SC-55mk2 | v1.01 | `sc55mk2_101` | No | Minor revisions

The SC-55 v1.21 is the best overall choice for DOS gaming — it has Capital Tone Fallback, correct instrument mappings, and all known firmware bugs fixed. DOSBox Staging’s `soundcanvas_model = auto` prefers v1.21 when its ROM is available. Avoid v2.00 and the Mk II versions for games that rely on CTF.

Games that require Capital Tone Fallback (CTF) for correct audio

These games use GS variation tones that depend on CTF. On SC-55 v2.00 or Mk II firmware (which lack CTF), certain instruments or percussion will sound incorrect or be silent.

- Blood (1997)
- Duke Nukem 3D (1996)
- Dune II (1992)
- Extreme Assault (1997)
- Hexen (1995)
- Might and Magic IV (1992)
- Might and Magic V (1993)
- Shadow Warrior (1997)
- The Elder Scrolls: Arena (1994)
- WarCraft II (1995)

## FluidSynth

FluidSynth is a built-in software MIDI synthesiser that uses SoundFont (`.sf2`) sample banks to generate audio. Unlike Sound Canvas emulation, it does not attempt to replicate any specific hardware device — instead, the character of the music depends entirely on which SoundFont you load. This makes it very flexible but also means results vary: a good SoundFont can sound close to an SC-55 on many games, while a poor one can sound noticeably wrong.

FluidSynth is lighter on CPU than Sound Canvas emulation and is a good option when you don’t have SC-55 ROMs or when you prefer a particular SoundFont’s character.

### SoundFont setup

Download a SoundFont file and place it in the `soundfonts` directory inside your DOSBox configuration folder:

Platform | SoundFont directory
--- | ---
Windows | `C:\Users\<USERNAME>\AppData\Local\DOSBox\soundfonts\`
macOS | `~/Library/Preferences/DOSBox/soundfonts/`
Linux | `~/.config/dosbox/soundfonts/`

Then set the `soundfont` option to the filename (the `.sf2` extension can be omitted):

    [midi]
    mididevice = fluidsynth

    [fluidsynth]
    soundfont = GeneralUser-GS

### Recommended SoundFonts

GeneralUser GS is the best all-round choice for DOS gaming. It offers well-balanced instruments, good General MIDI and GS compatibility, and consistently pleasant results across a wide range of games. This is what we recommend for most users.

Other options worth trying:

- FluidR3_GM_GS — Comes bundled with MuseScore. Fairly close to SC-55 character on many titles, though some instruments can sound thin.
- Creative 4MB GM/GS/MT (`4GMGSMT.SF2`) — The SoundFont shipped with Creative Labs AWE32/AWE64 sound cards. A nostalgic choice that approximates SC-55 characteristics, though at a lower sample quality.

Tip

Some SoundFonts are louder or quieter than others. Use the `soundfont_volume` setting to normalise the volume, or append a percentage to the `soundfont` value (e.g., `soundfont = Arachno 40` to reduce it to 40%).

Tip

You can switch SoundFonts on the fly by changing the `soundfont` setting while FluidSynth is active — no restart needed. Changing any `[fluidsynth]` setting takes effect immediately and triggers a SoundFont reload.

For a hands-on walkthrough of setting up FluidSynth with a specific game, see the Star Wars: Dark Forces chapter of the getting started guide.

## External MIDI devices

If you have a real MIDI device connected to your computer, DOSBox Staging can send MIDI output directly to it. This is the ultimate option for enthusiasts who own an actual SC-55 or other hardware synthesiser.

## Mixer channels

Sound Canvas outputs to the SOUNDCANVAS mixer channel, and FluidSynth to the FSYNTH channel.

## Configuration settings

### FluidSynth

FluidSynth settings are to be configured in the `[fluidsynth]` section.

##### soundfont

  Name or path of SoundFont file to use (`default.sf2` by default). The SoundFont will be looked up in the following locations in order:

  - The user-defined SoundFont directory (see soundfont_dir).
  - The `soundfonts` directory in your DOSBox configuration directory.
  - Other common system locations.

  The `.sf2` extension can be omitted. You can use paths relative to the above locations or absolute paths as well.

  Note

  Run `MIXER /LISTMIDI` to see the list of available SoundFonts.

##### soundfont_dir

  Extra user-defined SoundFont directory (unset by default). If set, SoundFonts are looked up in this directory first, then in the standard system locations.

##### soundfont_volume

  Set the SoundFont’s volume as a percentage (`100` by default). This is useful for normalising the volume of different SoundFonts. Valid range is 1 to 800.

##### fsynth_reverb

  Configure the FluidSynth reverb.

  Possible values:

  - `auto` default – Enable reverb.
  - `on` – Enable reverb.
  - `off` – Disable reverb.
  - `<custom>` – Custom setting via four space-separated values: room-size (0.0–1.0), damping (0.0–1.0), width (0.0–100.0), and level (0.0–1.0). For example: `0.61 0.23 0.76 0.56`

  Note

  You can disable the FluidSynth reverb and enable the mixer-level reverb on the FluidSynth channel instead, or enable both reverb effects at the same time.

##### fsynth_chorus

  Configure the FluidSynth chorus.

  Possible values:

  - `auto` default – Enable chorus, except for known problematic SoundFonts.
  - `on` – Always enable chorus.
  - `off` – Disable chorus.
  - `<custom>` – Custom setting via five space-separated values: voice-count (0–99), level (0.0–10.0), speed in Hz (0.1–5.0), depth (0.0–21.0), and modulation-wave (`sine` or `triangle`). For example: `3 1.2 0.3 8.0 sine`

  Note

  You can disable the FluidSynth chorus and enable the mixer-level chorus on the FluidSynth channel instead, or enable both chorus effects at the same time.

##### fsynth_filter

  Filter for the FluidSynth audio output.

  Possible values:

  - `off` default – Don’t filter the output.
  - `<custom>` – Custom filter definition; see Custom filter settings for details.

### Sound Canvas

Sound Canvas settings are to be configured in the `[soundcanvas]` section.

##### soundcanvas_model

  Roland Sound Canvas model to use. One or more CLAP audio plugins that implement the supported Sound Canvas models must be present in the `plugins` directory in your DOSBox installation or configuration directory.

  Possible values:

  - `auto` default – Pick the best available model.
  - `sc55` – Pick the best available original SC-55 model.
  - `sc55mk2` – Pick the best available SC-55mk2 model.
  - `<version>` – Use the exact specified model version (e.g., `sc55_121`).

##### soundcanvas_rom_dir

  The directory containing the Roland Sound Canvas ROMs (unset by default). The directory can be absolute or relative, or leave it unset to use the `soundcanvas-roms` directory in your DOSBox configuration directory. Other common system locations will be checked as well.

##### soundcanvas_filter

  Filter for the Roland Sound Canvas audio output.

  Possible values:

  - `on` default – Filter the output. This applies a 1st order low-pass filter at 11 kHz (`lpf 1 11000`).
  - `off` – Don’t filter the output.
  - `<custom>` – Custom filter definition; see Custom filter settings for details.