PC MIDI + game port

DA-15 game port connector pinout used on IBM-compatible PCs, with Sound Blaster MIDI extensions on pins 12 and 15 for MIDI TX/RX.

The IBM Game Control Adapter, introduced in 1981, uses a DA-15 (15-pin D-sub) female connector at the computer to support up to two analogue joysticks with four potentiometer axes and four buttons, accessed via I/O port 201h. Sound Blaster and compatible sound cards from 1989 onwards repurposed two pins of this connector to carry MIDI signals: pin 12 (originally assigned as ground for buttons 3 and 4 in some implementations) became MIDI Transmit, and pin 15 (originally not connected in the IBM specification) became MIDI Receive. This MIDI-via-game-port scheme is a Creative Labs extension, not part of the original IBM Game Control Adapter specification.

15 PIN D-SUB FEMALE 15 PIN D-SUB FEMALE at the computer

15 PIN D-SUB MALE 15 PIN D-SUB MALE at the joystick cable.

PinNameDirDescription
1+5VOUT+5 VDC
2/B1INButton 1
3X1INJoystick 1 - X
4GND-Ground
5GND-Ground
6Y1INJoystick 1 - Y
7/B2INButton 2
8+5VOUT+5 VDC
9+5VOUT+5 VDC
10/B4INButton 4
11X2INJoystick 2 - X
12MIDITXDOUTMIDI Transmit
13Y2INJoystick 2 - Y
14/B3INButton 3
15MIDIRXDINMIDI Receive

Notes

  • Direction is computer relative to joystick.
  • Joystick axes use 0–100 kΩ potentiometers; axis position is read by timing a monostable pulse via NE558 quad timer.
  • Pins 12 and 15 carry MIDI signals only on Sound Blaster and compatible sound cards; they are not connected (or are used for ground/buttons) on the original IBM Game Control Adapter.
  • Pin 8 carries +5 V on Sound Blaster cards to power an external MIDI adapter breakout cable; this is a sound-card extension and is not defined in the IBM Game Control Adapter specification.
  • MIDI operates at 31.25 kbps ±1% using a current-loop, opto-isolated interface; MIDI TX and RX on pins 12 and 15 connect to a passive breakout cable that provides standard 5-pin DIN MIDI IN and MIDI OUT sockets.

Signals

  • +5V — +5 VDC supply from the host (pins 1, 8, 9); used to power joystick potentiometers and, on sound cards, the MIDI breakout adapter
  • /B1 — Button 1, active low; joystick 1, trigger button
  • X1 — Joystick 1 X-axis, analogue; resistance to ground determines axis position
  • GND — Ground reference (pins 4, 5)
  • Y1 — Joystick 1 Y-axis, analogue
  • /B2 — Button 2, active low; joystick 1, second button
  • /B4 — Button 4, active low; joystick 2, second button
  • X2 — Joystick 2 X-axis, analogue
  • MIDITXD — MIDI Transmit Data (computer to MIDI device); Sound Blaster extension on pin 12; 31.25 kbps serial
  • Y2 — Joystick 2 Y-axis, analogue
  • /B3 — Button 3, active low; joystick 2, trigger button
  • MIDIRXD — MIDI Receive Data (MIDI device to computer); Sound Blaster extension on pin 15; 31.25 kbps serial

About MIDI Signals

How MIDI messages are structured

MIDI messages consist of a status byte followed by zero or more data bytes. The status byte identifies the message type and, for channel messages, the target channel. Data bytes always have bit 7 clear (value 0–127), while status bytes have bit 7 set.

For example, a Note Off event on channel 0 is transmitted as three bytes: a status byte (1000 0000), a key number byte (0kkk kkkk), and a velocity byte (0vvv vvvv).

Bytes table

TypeCommandByte
765
DataDataData
ChannelNote off event1000
Note on event1001Channel
Polyphonic key pressure1010Channel
Control change1011Channel
Program change1100Channel
Channel pressure1101Channel
Pitch wheel change1110Channel
System ExclusiveSystem Exclusive Header1111 0000
System Common(Undefined)1111 0001
Measure Information1111 0010
Song Select1111 0011
(Undefined)1111 0100
(Undefined)1111 0101
Tune Request1111 0110
System ExclusiveSystem Exclusive End of block1111 0111
System Real TimeTiming Clock In Play1111 1000
Measure End1111 1001
Start From 1st Measure1111 1010
Continue Start1111 1011
Timing Clock In End1111 1100
?1111 1101
Active Sensing1111 1110
System ResetSystem Reset1111 1111

Channel Signals

The four highest bits of a channel status byte identify the message type; the four lowest bits identify the channel (0–15). Note off event (key, velocity) Note on event (key, velocity) Polyphonic key pressure (key, after-touch) Control change (command address, command value) Program change (program number) Channel pressure (after-touch) Pitch wheel change (value lsb, value msb)

System Exclusive

These two messages are used to send device-specific data. A System Exclusive block begins with a header byte, followed by a manufacturer identification code, one or more data blocks, and a System Exclusive End of Block byte. System Exclusive Header + Data (Identification code) + Data block(s) + System Exclusive End of block

System Real Time

Real-time messages are used for synchronisation and are sent on all channels. Timing Clock In Play Transmitted while the system is in play mode; 24 clock pulses per quarter note. Measure End Replaces the Timing Clock In Play signal at the end of each measure. Start From 1st Measure Sent when the master play key is pressed; the first Timing Clock In Play must follow within 5 ms. Continue Start Sent when the master continue key is pressed; the next Timing Clock In Play must follow within 5 ms. Timing Clock In End Sent when the master is in wait mode; used to maintain PLL lock during a pause. Active Sensing Periodic keep-alive message transmitted every 300 ms to indicate that the connection is active.

System Common

Measure Information (measure number lsb, measure number msb) Song Select (song number) Tune Request

System Reset

System Reset Resets the entire system to its power-up state.

Parameters

Channel Channel number from 0 to 15. Key Key number from 0 to 127; middle C is number 60. Velocity Velocity from 0 to 127 (0 = Note off). If the keyboard does not support velocity, 64 is sent as a default. After touch After-touch from 0 to 127. Command address Address from 0 to 127. Command value For controllers, from 0 to 127. For switches, 0 = off, 127 = on (other values are ignored). Program number Program number from 0 to 127. Identification code Manufacturer code from 0 to 127.

01000 0001Sequential Systems
40100 0000Kawai
41100 0001Roland
42100 0010Korg
43100 0011Yamaha

Measure number Measure number in 14 bits, split into 7 LSB bits and 7 MSB bits transmitted as two data bytes.

References

Category:Input Device Connectors