A MIDI interface and firmware update for the Yamaha CS70M Synthesizer

    Someone recently suggested designing a MIDI interface for the Yamaha CS70M and developing new firmware to support it .  As I had not worked with any Yamaha synthesizers, I agreed to tackle this rather large project.  The CS70M is based on the Z80 CPU.   At the time it was designed, EPROM and SRAM chips were much more expensive than today.   As a result, the CS70M has only 6K total EPROM bytes for code, and just 5K bytes of SRAM.  So the first task was working out how to design a MIDI pcb with a lot more EPROM space for code, and a larger SRAM as well.  For the serial interface, I chose the 6850 ACIA/UART chip, as that was used in a number of 1980's synths for the MIDI interface, and can still be obtained.  I wanted the MIDI installation to be as straightforward as possible, without requiring wires to be soldered to various boards.  The best way to achieve this was to move the CPU onto the MIDI board, which then has access to all of the CPU's signals.  A second ribbon cable was used to gain access to the buffered address lines.   A small ribbon cable connects the MIDI jacks to the board.  Here is how the new MIDI board looks:

And here is how it connects to the Z80 socket and one of the EPROM sockets on the CPU board:

    I spent quite a while studying the original firmware and schematics.   The design of the CS70M is quite different from the other synths I have worked with.  My new firmware (which used the 3_3 and 4_3 code as the starting point) has been tested by three CS70M owners, and is now available.   Here are the new features:  (X and Y are used instead of I and II, as in the Yamaha service docs)

1) Eight banks of 30 user patches, or 240 total  (Only one bank accessible at a time)

2) MIDI Note On/Off control.   (Only Note Message input is supported) 

3) MIDI Sysex patch save and restore - saves or restores either the current bank, or all eight banks in one operation (magnetic card save/load works as before)

4) MIDI CC parameter changes are now supported.  Separate control of upper and lower and X and Y voices in split mode for most parameters.    (No CC's are transmitted)

5) Non-volatile storage of MIDI channel, patch bank, and user settings

6) Sequencer memory is roughly 3 times the original size, and is stored in battery-backed SRAM.  Sequence data can be saved and loaded using MIDI sysex.

7) Encoder "relative mode" software bug discovered and fixed.

8) MIDI pitch wheel bend by semitones, selectable as either +/- one octave or one fifth

9) User settings for the following:

a) Enable MIDI clocking of CVonly sequencer mode playback, with several divide ratios

b) Enable all-note bend by semitones using MIDI pitch wheel messages or CC

c) Non-prog LFO free-running mode (also disables prog LFO envelope reset, unfortunately)

d) Enable MIDI CC reception

e) MIDI notes in split mode routed based on split point instead of MIDI channel

f) Dump sequencer data as sysex instead of all patch banks

g) Select pitch wheel message pitch bend range of +/- one fifth instead of one octave

As noted above, MIDI CC reception is now supported for controlling sound parameters.   Here is a document containing the CC assignments, along with some additional information about using the other new features.

Please contact me if you are interested.

Here is a document showing the steps required to install the new board and firmware.

  Please note: Taking a CS70M apart and installing the new pcb must be done carefully, or damage to the synthesizer could result.  It should only be attempted by someone familiar with this type of work.  I will not be responsible for any damage to any instrument caused by either proper or improper use of the design offered here. 


Copyright © 2007-2022 by Tauntek.com. All rights reserved.