154 lines
8.9 KiB
Plaintext
154 lines
8.9 KiB
Plaintext
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.
|
|
|