During my recent visit to super interesting fest of ideas at Unix 1990 in Tennesse I went across some
discussion on implementing MIDI interface with the NEXT workstations. It occured to me that solutions I
have applied to my Mac maybe of use wide use. 
I found an article which bring some light in this matter. In addition I wish to share some of my workshop
experiences.
I also edited slightly the attached drawing which has a supplementing of a power supply.
I hope you shall find it useful.

Doug Yuill

June 1991, Ottawa, Canada
 
For further inquiries about the source code or any other comments please get in touch by e-mail at
following address: dyuill@ccs.carleton.ca 
 
 The included article describes a MIDI interface for the Apple Macintosh, 
October 1985, which can be used with any UNIX computer employing the 
Zilog 8530 SCC (Serial Communications Controller) including the NEXT & 
SPARC workstations.
 The circuit described in the article assumes you are interfacing to a 512K Mac 
(pre-Mac Plus) which provided +5 volts dc on pin 2 of the 9 pin D connector 
used for the serial port. The Mac Plus dispensed with the 9 pin D connector 
in favor of an 8 pin mini circular DIN connector which does not provide any 
power. This is the same connector used on the NEXT workstation I have included 
an additional circuit diagram which will regulate 8-15 volts dc down to the 
+5 volts required by the MIDI interface. You may have an unused AC power 
adapter laying around that you can use.
 It should be able to deliver at least 30 ma at 8 volts to be suitable. When 
you go shopping for parts, be sure to take your power adapter with you so 
you can select a suitable connector. Also check the pin-out spec's on the 
serial port for your work station to see if it provides any dc voltage output. 
You may not need the power adapter (or regulator circuit) if you can siphon 
some juice from your serial port!
 Do use the power regulator if your serial port only provides 12v dc. You'll 
also need the pin-out spec for mapping between the pin numbers used by the 
Macintosh and your workstation. 
 You should probably not undertake this project unless you can read a schematic 
and have soldered before. I built mine up on perf board using point to point 
wiring although if I were doing it again I would use vero board. Be sure to 
buy a small enclosure to put it all in. I purchased everything I needed from 
Active Components (a division of Future Electronics) for about $10 although 
I'm sure that Radio Shack would have most of what you need. Don't forget a 
pair of 5 pin chasis mount DIN connectors for your MIDI in/out! If your on 
a real tight budget you could dispense with the DIN connectors and just cut 
a MIDI cable in half and wire it directly in. 
 I have 68000 assembler source code for a MIDI driver for the Mac that may 
be of use to anyone writing a driver for UNIX.
 Doug Yuill
 June 1991, Ottawa, Canada
 
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 modem 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 exemal 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 853O'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 
PCS900 is a MIDI specified part, although other optoisolators 
with Schmitt manager outputs can be used. The output of the opto is 
routed to a couple of inverter stages to provide the RXI+ 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 hard wired 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.

