JX 10 SysEx Edit

Updated 03/03 ! - and about time...

Like many JX10 owners without a PG800 programmer I was disappointed to find that Roland had made a complete arse of the midi implementation - there is no way to edit sounds via midi.
So I got hold of the service manual and the datasheet for the 6303 processor used in the assigner board, and set about dis-assembling the firmware, in the hope of finding the 'bug' that stopped SysEx sound edits working.

In the process I learned a lot about how the JX works, how the PG800 works, and how NOT to write firmware for a synthesizer.
The Roland software engineers must have either been under real pressure to get the job finished, or they simply got the office cleaner to write it, because it is a poorly structured, badly written mess.

When I found the code for SysEx reception there was only a slight hint that they had planned to implement editing via midi, no 'broken' code for it, but with a little thought, I found a way to hack it in there myself.

DISCLAIMER: I take no responsibility for any damage undertaking a ROM swap may cause to your JX10, or any coincidental damage. If you're not sure how to go about writing and fitting a new EPROM, DONT DO IT!

jx10se.zip - This file is a zip of binary dump of my hacked version of the JX10 firmware
This is a BETA version of the code - please let me know if you come across any bugs.
It is based on the v2.0 JX10 firmware.
A number of people have been using this code for ages without any reports of trouble.
I've also now got a copy of the 2.3 ROM, which I will dis-assemble when I get time, and see what (if anything) they fixed.
Then if it's worthwhile, I'll patch the 2.3 ROM for SysEX.

The bulk of the code is copyright Roland Corp. I only provide the image as a full dump rather than a patch file to save the hassle of reading then patching an existing ROM.
You may not download this file unless you are the owner of a Roland JX10 synthesizer.
The modification to the code is provided purely for non-commercial use.

The binary image should be written to a suitable 32k EPROM (27C256) and swapped for the original firmware on the assigner board - the one with the 6303 processor.
You could always erase and re-write the original EPROM, but back it up before you do.
Details of how to swap the ROM over are here.

This firmware allows editing of the currently active tone via midi. That is, if you are using Dual or Split mode, the Tone that is currently active for editing (the one with the dot by the number) will be modified by the SysEx.
The command format is the same as that used by the MKS70 rack version of the JX10.
For further information, see the links to other notes below.

It does not support the MKS70 single patch/tone dumps nor does it support sysex editing of patch parameters.
I have been using the Emagic SoundDiver MKS70 editor with my JX10 for tone edits, and it has been working well.
I considered implementing direct editing of the Upper and Lower tone without having to switch the selected tone from the front panel, but as my intention was to allow a midi fader box to be used for editing the JX in the absence of a PG800, I decided not to bother.
I believe Tone B editing is broken on the MKS70 anyway.

A long time ago, Mike Azevedo sent me a Peavy 1600 control setup for use with JX10se, which I have up to now completely forgotten to upload here, so with apologies to Mike for taking so long - here is a zip file for Peavy 1600 owners - JX10se-PC1600.zip

During the development of this code I came to the conclusion the JX10 firmware really needs to be scrapped and re-written from scratch.
This keyboard must have about the sloppiest midi timing I've heard - due to the fact that incoming midi data is written into a table by the interrupt routine, but the voice assignment code is run in the main program loop after a potentially long and variable delay.
I've also decided that due to a lack of decent free dev tools, it's not worth the effort re-writing the firmware for the original 6303 processor. I've got a plan on the drawing board to use a T89C51RD2 CPU on an adapter board, which would make life much easier from the development point of view, and also allow MIDI updates of the firmware.
If this sounds like a good idea, let me know, and maybe I'll get round to it...

Further Information:

JX and PG800 Technical Information
JX10se Sysex Command Set for Tone Edit

Last update: 31st March 2003