FABIEN SANGLARD'S WEBSITE

ABOUT  CONTACT  RSS  GIVE


May 11, 2025

This article is part of the IBM PS/1 Restoration project series
IBM PS/1 2168 Restoration: Roland

I knew next to nothing about MIDI when I started this restoration project. Back in the days, I was vaguely aware that some DOS games could play music via a "canvas" available in their respective SETUP.EXE. I never had the means to buy any Roland equipment (which I assumed was for professionals) but I assumed the music was better.

Fast forward 30 years, a plethora of Youtube videos show how MIDI music are not just a "little" better. They completely change the gaming experience.

MONKEY.EXE
SoundBlaster FMRoland MIDI

True connoisseurs will favor The Secret Of Monkey Island in EGA and MT-32 audio. Making anything that looks this beautiful with only 16 colors is a testament to the craft and mastery level of Lucasarts artists.

Monkey Island is not the only game to take things to another level. DOOM and DUKE3D are also up there with stellar soundtracks.

DOOM.EXE
SoundBlaster FMRoland MIDI


DUKE3D.EXE
SoundBlaster FMRoland MIDI
Designing a MIDI pipeline

Since I was starting from scratch, my first step was to build a mental model of the sound flow. The big picture of MIDI music playback is as follows.

  1. The PC generates MIDI commands.
  2. Something accepts MIDI commands and converts them into a music analog signal.
  3. The sound card generates a sound effect analog signal.
  4. Something mixes the music signal and the sound effect signal.
  5. Something generates a signal toward the speakers.
                                                                               
 ┌────────────────────┐                                                        
 │                    │     MIDI commands     ┌──────────────┐                 
 │                    ├──────────────────────►│ Synthesizer  │                 
 │                    │                       └──────┬───────┘                 
 │                    │                              │                         
 │      IBM   PC      │                              │  Music                       
 │                    │                              │                        
 │                    │     Sound effects     ┌──────▼───────┐    ┌───────────┐
 │                    ├──────────────────────►│  Mixer       ├───►│ Speakers  │
 └────────────────────┘                       └──────────────┘    └───────────┘
                                                                               
The simplest approach

There are many ways to implement this and many pieces of hardware you can add (see LGR videos for impressive hardware mountain[1]) but I wanted to keep it as simple as possible.

The configuration I landed on was to have the Sound Blaster 16 generate both the sound effects and the MIDI commands. A special cable DB-15 to MIDI connected to the Game Port of the SB16 would carry the MIDI commands to the MIDI sound generator (a.k.a: Synthesizer).

There are many MIDI synthesizers available, LGR did a fantastic series about them[2][3][4][5][6]. I selected the Roland SoundCanvas SC-55ST (review by ctrl-alt-rees) because it is tiny, minimalist, inexpensive, beige, and looks decent in vertical position.

The SC-55ST audio output is routed back into the Sound Blaster 16 ASP via the "line-in" jack (still with me?). Finally both audio streams are mixed by the SB16 and sent to the "output jack" towards the speakers.

                                                                         
 ┌────────────────────┐                                       
 │    ┌────────┐      │     MIDI commands     ┌──────────────┐
 │ PC │ SB16   │ DB-15├──────────────────────►│              │
 │    └────────┘      │                       │ SC55-ST      │
 │    ┌────────┐      │     Music analog      │              │
 │    │ SB16   │ in   │◄──────────────────────┤              │
 │    └───┬────┘      │                       └──────────────┘
 │        │           │                                       
 │        │           │                       ┌──────────────┐
 │        │           │     Music +           │              │
 │    ┌───▼────┐      │     Sound effects     │  Speakers    │
 │    │ SB16   │ out  ├──────────────────────►│              │
 │    └────────┘      │                       │              │
 └────────────────────┘                       └──────────────┘

My SC-55ST came without a power supply. That was the opportunity to understand better the power requirement marking on the back. Voltage and Amperage are obvious but one must also pay attention to the polarity sign. The SC-55ST uses a negative center[7].

And of course, nothing works

I plugged everything in, ran DOOM's SETUP.EXE to select "GeneralMidi/SoundCanvas" with I/O port 330h. And of course, as usual, it did not work. I could hear the sound effects but not the music.

Debugging the music pipeline

With a system made of so many parts, it can be difficult to troubleshot where the problem is coming from. I received help on Vogons[8] and I found it convenient to walk down the data flow and list what could go wrong in each sub-modules.

  1. Is the game writing to the correct I/O port?
  2. Are they multiple ISA cards using the same I/O port?
  3. Is the MIDI sound generator receiving the MIDI commands?
  4. Is the MIDI sound generator outputting an audio signal?
  5. Is the mixer (in my case the SB16) receiving the signal?
  6. Are the sound effects signal and music signals properly mixed?
  7. Is the speaker receiving the audio signal?

Here is the way I answer all of them.

1. Games such as DUKE3D have a SETUP.EXE which can test if the I/O port is working.
2. Keep track of the I/O port and IRQs in a table. Use ASTRA to verify.
3. The SC-55ST LED will blink when it receives MIDI commands (see video below).

4. Plug the speakers directly in the front jack output of the SC-55ST to test the output.
5. Buy a Nouosiya cable USB to MIDI adapter to issue commands directly from a modern computer. GarageBand does not allow you to play MIDI toward USB. I used "PocketMIDI" to generate MIDI from my Mac.

6&7. Use a known reliable audio source (walkman?) to test that the line-in volume of the mixer is properly set.

The faulty component

After much debugging, it turned out the cable DB-15 to MIDI I had purchased on eBay did not work. Replacing it solved the problem. I had amazing music!

The dreaded Hanging note bug

The joy was short-lived. I quickly ran into an issue where the SB16 MIDI stream would get stuck on a note. It is a known problem named the "Hanging note bug"[9]. I had to go to the next level and get a MIDI card.

In all fairness using the SB16 to generate MIDI would have ever worked. I fully intended to return to Strike Commander and join the WildCats. I would not have been able to plug my Flightstick Pro and use the DB-15 for MIDI.

Music Quest

The next level was to buy a MPU-401 capable ISA card. The Music Quest did exactly. With that card I was going to kiss good-bye to incompatibilities, drivers, and other TSR hacks (SoftMPU).

This super cool card having been discontinued decades ago, one can acquire a PCMIDI card, a well-reviewed[10] clone of the Music Quest. Made by passionate people, you can feel the love on their website.

I/O and IRQ conflicts

Like when I installed the Sound Blaster 16, I ran into conflicts when installing the PCMIDI.

Card IRQ DMA I/O
Ether16 Network 3 - 240
Sound Blaster 16 ASP 5 1,5 220h, 330h
PCMIDI 2 - 330h

Since most games default to 330h I decided to give it to the PDMIDI and move the SB16 to 300h. It only took moving one jumper on the SB16! What a joy to have the manual!

Card IRQ DMA I/O
Ether16 Network 3 - 240
Sound Blaster 16 ASP 5 1,5 220h, 300h
PCMIDI 2 - 330h
Final configuration

My final sound setup was as follows.

                                                                         
 ┌────────────────────┐                                       
 │    ┌────────┐      │     MIDI commands     ┌──────────────┐
 │    │ PCMIDI ├──────┼──────────────────────►│              │
 │    └────────┘      │                       │ SC55-ST      │
 │    ┌────────┐      │     Music analog      │              │
 │    │ SB16   │ in   │◄──────────────────────┤              │
 │    └───┬────┘      │                       └──────────────┘
 │        │           │                                       
 │ PC     │           │                       ┌──────────────┐
 │        │           │     Music +           │              │
 │    ┌───▼────┐      │     Sound effects     │  Speakers    │
 │    │ SB16   │ out  ├──────────────────────►│              │
 │    └────────┘      │                       │              │
 └────────────────────┘                       └──────────────┘
General MIDI vs MT-32 MIDI

There are a few subtle things to understand about MIDI. The first one is that some games were published BEFORE the "General MIDI" standard was established in 1991. These games issue Roland MT-32 MIDI commands.

On a game such as Monkey Island (released Oct '90), the music will sound weird because it sends MIDI MT-32 commands where the instrument mapping is not the same[11] as the SC55-ST Genera Midi mapping.

Monkey Island is still playable since the SC-55ST is able to emulate the MT-32 (which is just a remapping of the instruments). One needs to play a special MIDI set of command MT32EMUL.MID to enable the MT-32 mode (you need to reboot the SC55 to disable emulation mode).

There are limits to the MT-32 emulation. The SC55ST does not support custom samples nor any of the special effects of the MT-32. If one wants to play game using these effects, they will have to get a real MT-32 synthesizer. To learn more about the MT-32, LGR has an excellent review about it[12] and has an installation guide[13].

Next

Speakers

References

^ [ 1]LGR 486 Upgrade! Building a MIDI Mountain
^ [ 2]LGR: Roland SC-55ST: $400 MIDI Music Powerhouse from 1993
^ [ 3]LGR: Roland Sound Canvas SC-55: 90s MIDI Excellence
^ [ 4]LGR: Roland MT-32: Retro PC MIDI Music Revisited
^ [ 5]LGR: Roland MA-12Cs: Best Retro Computer Speakers I've Had!
^ [ 6]LGR: Canyon.mid Mixdown: MT-32+SC55+MU80+NS5R
^ [ 7]The Roland SC 55: Battery Check and Playing with ScummVM
^ [ 8]No music on PAS16 / Sound Canvas SC-55ST
^ [ 9]Hanging note bug
^ [10]A new MPU-401 solution: The Music Quest clone
^ [11]Why The Secret Of Monkey Island sounds weird on my Roland SC-55ST?
^ [12]LGR - Roland MT-32: Retro PC MIDI Music Revisited
^ [13]Connecting Roland MT-32 to Sound Card


*