When MIDI Was New, Part One

 

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)

–Crow

/**/


Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here: adafruit.com/editorialstandards

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in! adafruit.com/mastodon

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !



No Comments

No comments yet.

Sorry, the comment form is closed at this time.