Synth hacking in my case involves hacking synthesizer operating systems to make some often minor improvement. Haven't done a lot of this, but here's a list of what I have done.
Ok, so this could have been done using an external MIDI filter box, but it's cooler to do this within the synthesizer itself.
The main hassle here was that the CPU in the D-50 (a NEC µPD78312) is a rather unusual one so finding an opcode list let alone a disassembler was challenging. With some help from the UK Vintage Radio forum I managed to locate an opcode map and actually also a disassembler (see the link for details) and I was on the way.
An additional problem was that the OS ROM in the D-50 is soldered in place, so I had to remove the chip, then read it, then mount a socket, then after rewriting the small part of the OS code that handles the transmission of the All Notes Off message program an EPROM and mount it.
Anyway, the resulting binary image is here. It is based on the 2.20 version of the original D-50 ROM.
Interestingly, the OS MIDI code is rather differently designed than in the D-50, although the two machines are from the same company and of similar vintage.
Anyway, the resulting binary EPROM image can be found here.
Like the S-10, the Juno-2 uses an MCU (8032) derived from the Intel 8051. Decided to not only remove the All Notes Off message but also change the startup text to something more welcoming, as well as adjust the version number (visible by holding PORTAMENTO and MOD RATE while turning on the machine).
The resulting binary image is here.
But I digress.
One problem with the OB-Xa is that there is a bug in the autotune routine,
whereby voices which during are proving hard to tune and end up being slightly
sharp are reported as being 'untunable', which results in a flashing LED to
be shown for that voice after autotuning has completed.
The reason for this is that the autotune acceptance range in the original OS
is +0 / -24 cents. In other words, it's acceptable for an oscillator to be
24 cents flat, but not a single cent sharp. This is obviously a bug, as the
acceptance range should be symmetric. I therefore modified the autotune
acceptance range to be +/- 6 cents. It would be quite easy to change this
to +/- 12 cents if necessary to get the same acceptance range as the
original but without the offset, but if the synthesizer is working properly
it should be no problem to get the oscillators within +/- 6 cents; it should
be much closer than that anyway.
Normally this is not noticed on a properly working OB-Xa, as the autotune
routine makes several attempts at tuning each oscillator, and one of them
is bound to hit within the acceptance range. I discovered the problem on an
OB-Xa where there was a slight amount of noise modulating the oscillators,
causing them never to hit spot on during autotuning.
This was all tested and verified using my Nord Lead 2 patched into the
autotune comparator on the lower mother board of the OB-Xa, together with
a Korg tuner to measure the tune range.
Programming-wise, the OB-Xa has a Z80 CPU which I'm very familiar with,
furthermore, the software wasn't very optimized to start with, so it was easy
to optimize it in order to fit in the extra bytes needed to fix the bug.
So, after that long explanation, here's the revised XAC2.BIN EPROM for the
the OB-Xa, file name XACA2.BIN
(checksum B559h if you want to verify the downloaded image). If you want to
try this, but you don't have an XAC2.BIN EPROM in your OB-Xa but rather
another firmware version, email me and I'll send you images for the whole
set.
Back to my synthesizer home page.
Fix the autotune routine in an Oberheim OB-Xa
Ok, so the OB-Xa is not my favorite synthesizer. Horribly overweight and
oversized for what it is, with small hard-to-turn knobs, and not very
many parameters to boot. The only redeaming feature is the existence of both
-24 dB/octave and -12 dB/octave filters, but given that there are actually
two CEM 3320 4-pole filter chips inside, they could have done much more
with the hardware.
This page is (c) Copyright 2013-2015 by Ricard Wanderlöf