Heya folks, Crow here. With CircuitPython making the rounds I decided it was finally time to talk about something I’ve been working with since 1984: the musical instrument digital interface, better known as MIDI. Back when the Zilog Z80 became the fashionable microprocessor of choice in the late 1970s the majority of music synthesizer manufacturers adopted the Z80 for use as the key assigner and patch manager control system a programmable-preset polyphonic synthesizer of the era required. This included Oberheim, Sequential Circuits and Moog. Other manufacturers used variants of the Intel 8048 and 8051 (Korg and Roland), Mostek 6502 (Octave-Plateau) or Hitachi 6303 (Yamaha). Of course no manufacturer stuck to just one processor model as Yamaha used the Z80 in the CS70m, and the 8031 in the GS1, Fairlight used two Motorola 68000s and eight 6809s in the Fairlight CMI series…and so on. Lots of instruments with lots of CPU types, and one big emerging problem.
The problem was getting one keyboard to talk to another. For the early polyphonic instruments, say an Oberheim 4-voice, and modular gear like a Moog system 55, technicians would be asked to create a system that allowed the gates (a key is pressed signal) and pitch voltages (analog oscillators follow a frequency scale, usually 1 volt per octave) to be output or input between instruments and allow a kind of shared action. While this worked to some degree it only worked between instruments that had similar keying and pitch response, and custom circuit boards had to be made to buffer the control signals not normally brought outside the instruments. This meant every keyboard interface was a custom effort, and only for that particular configuration of instruments. Change one, and it all had to be done again. Of course not every instrument had the same pitch and gate control setup. Korg and Yamaha used a linear frequency scale often referred to as V/Hz, or 1 volt per frequency decade. This meant a 1 volt per octave pitch voltage would not work save for a single octave. Not all gates were the same, either. Some would go high, and not necessarily to just +5 volts. Some went low, and again not necessarily to zero volts, many went to -6 volts or more as was common it instruments such as my all-time favorite synthesizer, the “Blade Runner machine” better known as the Yamaha CS-80.
The CS-80 is a 100kg beast of a machine. It is two synthesizers controlled by one keyboard, with eight voices in pairs. It has polyphonic key velocity (how hard a key is played) and polyphonic aftertouch (how hard the keys are held down afterward). It has forty circuit boards and about 300 custom chips but no microprocessors. Interfacing the CS80 to other instruments was rarely done as tapping into the tight, synchronous control buses that managed all of these polyphonic operations was complicated by the fact these buses were bipolar: +8.5v was a logic zero, -6.5v was a logic one. This 15-volt spread was chosen as that was the supply voltage safe limit of the analog switches used back then: the 4051, 4052, 4053 and 4066. It is easier to build a new machine in this case. Still, this isn’t as bad as the Yamaha GS1 which used a custom chipset in PMOS process in which the majority of the logic operated at -12V, with a -12V-referenced -7V supply provided to run the patch manager (8031) at a its usual “+5 volts,” insofar as -7 is indeed +5 volts above -12v. Moreover, the GS1 was an FM digital machine, and no amount of pitch voltage control circuity was going to work as an interface here.
In order to address the problem of interoperability between synthesizers from different manufacturers, Ikutaro Kakehashi, the engineer who founded the Roland Corporation, called Tom Oberheim up in 1981 to discuss how they might work out a cross-platform scheme to allow one instrument to control another. In those days, the circle of knowledgeable people in the industry was rather small, so Tom called up his friend Dave Smith (Sequential Circuits, Dave Smith Instruments) and along with Kakehashi they developed the specification for a communications standard for use between instruments. Roland had their DCB (digital control bus) already present in their then-flagship model Jupiter 8, but as they had the Jupiter 6 still in development the door was open to giving this new spec a trial run. Side note: the JP-6 and JP-8 are nothing alike. The trend was toward lighter, more portable keyboards, and thus the smaller JP-6 was a good candidate for the first adventures of MIDI. The JP-6 used three 8031-type microprocessors: one for MIDI/keyboard/front panel operation, and two for voice board control, one on each voice board. 8031s had an on-chip UART which was a novel feature in those days, but this made it easier to install the MIDI hardware and firmware.
Meanwhile, on the US side, Dave worked out how to implement MIDI on his Z80-based Prophet-600. The Z80 did not have an on-chip UART, so one had to be connected to the address and data buses. He used the venerable Motorola 6850 UART chip, from the 6800 line of microprocessor peripherals. Zilog had a dual USART chip available, but the component supply pipeline was hard enough to handle in those days so he used the more easily acquired 6850. Dave, having written the Z80 firmware a few years earlier for the first programmable-preset synthesizer (the Prophet-5), revised the code for the Prophet-600. Aside from implementing the MIDI v1.0 spec, he also managed to code in a sequencer and a software envelope generator. Now two instruments were equipped with MIDI: the Roland Jupiter-6 and the SCI Prophet-600.
At the NAMM show in 1983, Roland and SCI demonstrated this new revolution in music hardware as a JP-6 was connected to a Prophet-600 and played together, and later that year the MIDI spec was first published following Bob Moog’s announcement of it in his column for Keyboard magazine. It was there I first learned of it and ordered a copy of the MIDI spec from SCI, I think the cost was $5 mainly to cover the postage. And 35 years later, I still have it–though a bit coffee-stained. In the fall of 1984 I bought a Korg Polysix on closeout from a manufacturer’s rep. It is still one of my favorite machines, mainly for the clever use of its programmable analog effects capability. It did not have MIDI, however, and being a Korg, it used the linear V/Hz pitch control. That same year I built the first of my CP/M machines, a Z80 system based on the Ampro Little Board. With it I managed to write a few MIDI applications, mainly a voice librarian for the Yamaha DX7 and a few experimental MIDI record/playback programs. The DX7 I bought in early 1985, and the lack of MIDI on the Polysix became obvious. Of course there was only one solution:
I made my own MIDI interface for the Polysix in the fall of 1985.
(continued in part 2)