Kawai SX-240 new firmware project

 

    Someone recently suggested that adding CC support to the Kawai SX-240 was a worthwhile project, despite the relatively small number of units sold.  Adding sysex patch save/restore also seemed like a good idea.  The SX-240 uses two 8031 CPU's.  The "master" handles patch and sequencer RAM and selection, keybed scanning, and the front panel switches and display.   The "slave" handles the sound generation DCO's and analog circuitry.  Each 8031 contains one serial port, with rx and tx, both at the same baud rate.   MIDI input is fed to rx of the master CPU.  The tx of the master is used to feed control messages to the slave CPU's rx input (at the rather slow MIDI baud rate).  MIDI output must come from the slave CPU's tx, as the master's tx is taken.  So one problem was how to get sysex dump data from the master to MIDI out. 

    Anyway, after disassembling both code EPROMs and spending lots of time figuring out what did what, running Verilog simulations, scratching my head, etc, I started adding code and have added sysex patch and sequence save/restore, CC parameter change support for both upper and lower voices, MIDI note on/off for the lower voices, (upper voices were already supported) and non-volatile storage and power-up display of selected MIDI channel.  I have programmed a Peavey PC-1600x to control both upper and lower voice parameters using CC's, for testing.  I decided not to update the front panel display to reflect incoming CC changes.   This would have added complication, as a CC might be changing a lower parameter when the panel was selecting the upper ones for editing.   I wanted CC response to be as fast as possible.   Also, it seemed safer to simply change the parameter, to avoid getting the panel out of sync with the variables that control it.  

    Here is a list of the CC's that are currently implemented, and here is a document describing the format of sysex patch and sequence dumps.

    Here is an archive containing the factory presets and sequences in the new sysex format, captured with the new code.

    Here is a dump of the parameter values used to make the factory patches (extracted from a sysex dump using a script).

    Here is a sysex patch dump contributed by someone who has been testing the firmware.  I have included a listing of the patch names and parameter values as well.   The patches are a mix of his new ones, some factory ones, and some slots that are still "Basic 240" ones.   I have not tested these patches.

    Here is an archive containing a recently developed template for controlling the SX-240 with the new firmware and a BCR-2000.  I have not tested it myself.

    Here is an archive containing sysex files for a Peavey 1600X.  Four presets have been programmed.   Two are for one MIDI channel, and two for the same parameters using the next higher MIDI channel.   This should allow separate control of upper and lower voice parameters.   These sysex files were contributed by someone who is testing the new firmware, using my original presets.

    Someone recently gave me most of the parts of a non-working SX-240, which I am currently repairing (see above photo).   As a result, I have decided to place the new firmware images here for download.  This does NOT authorize you to sell my firmware.   This code contains my copyright notice and is protected from unauthorized duplication.   It is offered for non-commercial use only.  I am not currently planning to offer programmed EPROMs.  It is offered as-is and is not guaranteed to be suitable for any purpose.

    Here is an archive containing EPROM images of the new code.   I am using 27C256 EPROMs for both, and putting the code at an offset of 0x4000.  The original master EPROM was a 27128-25 and the slave was a 2764-25.  Most of the new features are implemented in the master code.  The only new feature that requires updating the slave code is saving patches and sequences via sysex.  The master MCU is the one near the left edge of the SX-240.  The slave CPU is closer to the voice board.

    Here is some information on how to use the new features.

    Here is some information about how to remove and install EPROMs.

      Some details concerning program changes:

   If the upper voices are selected by the front panel and a program change occurs, either using the switches, or with a MIDI command, the lower program that was loaded when the new upper program was last saved will be loaded automatically.  This is part of the original firmware, and can be disabled by holding the "Bank C" switch at power-up.  (I don't see any mention of this feature or how to disable it in the owner's manual)  Also, I have not changed the MIDI code that processes program changes.   As a result, the selected new program will be applied to either the upper or lower voices, depending on which is currently selected on the front panel.  MIDI program changes are only detected on the MIDI channel used to send notes or parameter changes to the upper voices.    I may look at changing the MIDI program change firmware to change upper or lower based on the MIDI channel, but have not done so yet.

    Replacing the SX-240 increment/decrement encoder:

   The Alps encoder used in the SX-240 is no longer available.  Mine had an intermittent internal short that was connecting +5V directly to ground, destroying a power supply transistor and blowing fuses.   Took a while to find that, as it only happened every so often.   I have since replaced the encoder with Digikey part #102-1775, or ACZ16NBR1E-15KQA1-24C.   It only puts out 24 pulses per revolution instead of the 50 of the original one, but aside from that it works well, and fits nicely in the space.  I attached it permanently to the front panel, and added a way to plug it onto the rear of the pcb with a connector, so that I can remove the pcb without removing the encoder.  Not sure if the original knob will fit onto the new shaft, but it looks like it should.   I don't have that knob.

Please note: Taking an SX-240 apart and replacing the EPROM(s) 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 code offered here. 

     

Copyright © 2007-2017 by TaunTek.com. All rights reserved.