Midi
Volume Number: 1
Issue Number: 11
Column Tag: Sound Lab
The Midi Connection 
By Kirk Austin, San Anselmo, CA.
This article will describe one way to interface a Macintosh with the MIDI
standard for communication with music synthesizers and related equipment. By
making a few hardware and software changes to the existing Macintosh serial ports,
MIDI ports can be created. A Macintosh equipped with MIDI ports can act as a very
powerful controller for musical equipment. By sending and receiving MIDI data the
Mac can do things like record synthesizer music, edit it, play it back, and do an
automated mixdown to stereo. The implications of this capability are great. Many of
the functions of a modern recording studio can now be brought into the Macintosh
owner's home.
MIDI stands for Musical Instrument Digital Interface and is a standard that was
agreed upon by the various major manufacturers of electronic music synthesizers.
The MIDI standard is a protocol for transferring data between music synthesizers and
computers. It allows equipment made by different manufacturers to communicate with
each other. Originally it was designed to let one keyboard instrument control another
one. You could play the keyboard on synthesizer "A" and the sound would be produced
by synthesizer "B". But the originators of the MIDI concept gave it enough flexibility
to allow it to do other things as well. Now it is possible to buy MIDI gear that will
control lighting equipment and mixing boards as well as keyboard synthesizers. An
important point to remember is that MIDI recorders don't actually record the sound
that is produced by the synthesizer but just the control signals that the synthesizer
needs to produce a sound. For instance, when a key is depressed on a synthesizer
keyboard at least three bytes of information are sent out over the MIDI cable: the code
describing a note down event and MIDI channel, the number corresponding to the key
(middle C=60), and the velocity that the key was struck with (used for dynamics). A
note up event is recorded in a similar fashion. So, altogether it takes six bytes to
record a note of any duration. This makes for a very compact data structure compared
to actually recording the sound itself.
In order to use the MIDI ports on the Mac you will have to write your own serial
drivers. As far as I know the driver routines for configuring the serial ports must be
written in assembly language. If you have a high level language compiler it should
allow inline assembly code in order to take advantage of the information presented in
this article. If your compiler doesn't allow this you may want to read on just to
further your understanding (you may also want to consider getting another compiler).
This months coverage will be of the hardware interface necessary to convert the Mac's
serial ports to MIDI specifications. The software driver routines will be covered in a
future article.
The most important consideration in converting to the MIDI way of doing things is
the baud rate. MIDI is clocked at 31.25K which is a nonstandard rate. The Macintosh
uses a Zilog 8530 chip to handle the serial ports. In order to get the Mac's 8530 chip
to handle data at the MIDI clock rate you have to provide an exernal clock signal for it
to use as a timing reference. I have used an oscillator circuit and a divider in order to
derive a 500K clock signal. This is again divided by 16 in the 8530 to produce the
necessary clock rate of 31.25K. Note that you may optionally use other pins on the
divider chip to get a frequency of 1 Meg or 2 Meg. Either of these rates will also do the
trick if you select the appropriate divisor in the 8530's write register #4 (more on
this in the forthcoming software description). Other than the external clock the
interface consists of some level shifting and isolation circuity in order to make the
Mac's signals conform to the MIDI specification.
The circuit is pretty straightforward. First we need to generate the clock signal
which is done with the circuit built around the crystal. The two inverters, two
resistors, capacitor and crystal form a 4 Meg oscillator that drives the 74LS93
binary divider chip. One of the outputs of the divider (depending on which frequency
you want to use) is routed to a capacitor and then a resistor to ground that is used to
offset the pullup resistors internal to the 26LS32 receiver chip in the Mac. The
reason this is necessary is that the negative input of the 26LS32 is referenced to
ground, so we need to swing at least 200 millivolts below ground in order for the
26LS32 chip to recognize it as a legitimate clock signal. This particular idyosyncracy
of the Mac is rather annoying, but not unworkable.
The transmitted data signal line is the next consideration. The TXD+ signal from
pin 4 of the Mac is fed through a couple of inverter stages to provide the TTL output
required by MIDI. The resistor and diode in front of the inverters protects them from
the negative voltages produced by the Mac. This is the easiest part of the interface.
The MIDI input port uses an optoisolator to avoid a condition known as ground
loops. This happens in audio systems when there is a slight voltage potential between
the ground lines of two different pieces of equipment. The result being an irritating
60 cycle hum in the audio output. The optoisolator keeps the equipment from reacting
this way by eliminating the common ground connection. The Sharp PC900 is a MIDI
specified part, although other optoisolators with Schmitt trigger outputs can be used.
The output of the opto is routed to a couple of inverter stages to provide the RXD+ and
RXD- signals that the Mac wants to see.
All that's left is to provide the power and ground connections. According to the
hardware information I got from Apple the +5 volt pin on the serial connectors can
provide as much as 200 milliamps output current. This interface draws about one
tenth that amount.
The clock signal may be wired to a three way switch in order to switch between
the three different speeds, or it may be hardwired if you are only going to be using one
speed. So far all three speeds have been used by one piece of software or another.