This is the first post in a series of small projects for retrofitting my JEN SX-1000 monosynth with a simple and cheap MIDI interface controller. Read about the basic idea here. Today, I am designing and building the micro-controller brain of the Jenny retrofit – if you are capable of basic soldering, it should not take you more than two hours and a couple of very common electronic parts.
…and my sweet Lord, does it make her shine!
Nothing fancy here. After inserting the booster/overdrive in between VCO and filter section, I took another of those lovely Musikding.de kits for a phaser, built it, drilled some holes into Jenny’s housing and fitted it.
I have been using Jenny as a bass synth recently, and I am quite impressed by the quantities of life and fun this old machine is adding to the mix. She doesn’t do that much in terms of tonal range, but what she does, she does well.
Drilling holes in Jenny’s front
Building my own wheels for the Launchpad Pro – once again, with style.
Two weeks ago, I started a little sunday afternoon project, sucessfully building my first own MIDI controller – a pitch bend/mod wheel/midi merge device to serve as a companion to my new Launchpad Pro. Using an Arduino, a prototyping board by SparkFun, and community-made code, I succeeded with surprisingly little effort – the most time-consuming part was finding and fixing the errors I had clumsily soldered into my pathetic excuse for a MIDI interface. But it worked!
As they say, the worst thing that can happen is that you succeed. The quick and easy success made me hungry for more – I started a MIDIfication project for my JEN SX-1000 monophonic synth, based on a Teensy, another microcontroller board that can be used within the Arduino development eco-system but is much better suited to MIDI/USB applications.
V2.0: A Teensy-based MIDI controller
This is actually a side project to that. I looked at my self-made controller and noticed that it is usable but not very playable – I wanted real wheels for the Launchpad, not sliders. So I decided to redo a V2.0 of the controller, based on the Teensy.
Isn’t it about time my beloved Jenny got her own MIDI interface?
To be sure, microcontroller-based interfaces for the JEN SX-1000 do exist. Apart from the commercial CV/Gate solutions by Kenton, there is Neil Johnson’s keyboard interface design. But even if you can get hold of the PCB – a supplier in the JEN SX-1000 group on Facebook had a batch made – the design has an intimidating parts list, and takes some serious time to build.
- easy to do (requiring only basic soldering skills, if any)
- easy to get (by using components that you can buy on Amazon if you have to),
- easy to develop (using standard solutions from the Arduino community),
- easy to schedule (because the project is divided up into little steps, each of which is a small afternoon sub-project with instant gratification),
- easy to participate (by contributing own ideas and code for parts of the project).
I will describe the basic layout of the MIDI upgrade kit project here. Each step, i.e. each sub-project, will then be treated in a new post, depending how fast I (or the community) get them done.
If you have tried to send a message, or use the shop, you may have noticed that it did not work in the last two days – or, you didn’t notice, and are still waiting for an answer. A conflict between the Contact Form 7 plugin, which I have rediscovered, and the WP Cerber security plugin made some readjustments necessary. It should all be fine again now.
On the plus side, I had the opportunity to overhaul my shop pages, so if you are interested in an update for the Akai AX-80 or Kawai SX-240, it is easier to find and order. Concerning the Matrix-6, there is news: A very old bug in the firmware has finally been found and eliminated; it made it impossible to set negative DETUNE (parameter 12) values. Oddly enough, nobody except Gregor from Stereoping ever seems to have noticed, so there is no harm in continuing to use the firmware V2.14.
There is a new version V2.15 though – Bob fixed the bug – so if you feel that you need negative detune values, you may order that. Or you may take the opportunity to buy one of the V2.14 firmware PROMs extra cheap – while stocks last.
This JEN SX-1000 belongs to Stéphane in France, who wrote to tell me of the three mods he did. I have never seen two of them before – a Tremolo control, and variable filter tracking. Which would make Gordon Reid very, very happy.
So here is Stéphane’s letter:
“Hello, here are some modifications for the Jen synthetone SX1000. Nothing is disconnected. Components are added.”
A bit of TLC for my oldest synthesizer: Jenny is getting a new potentiometer. As the synth’s pots were rather cheap, open types that gather dust, and are 40 years old now, they have become all scratchy and jumpy. As I have mentioned before, I am not the greatest fan of Kontakt spray and similar solvents/cleaners, so I bought replacements. But I never found the time to actually replace them.
This knob is a good place to start: The “glide” potentiometer is in charge of portamento, and it is one of the first things that might make Jenny fail (see Neil Johnson’s site). A faulty glide pot means that the synth will only ever play the same note regardless of which key you press. So I did replace that pot, which is pretty straightforward – you’ll find some pictures in this gallery. (It is a 2.2M linear type BTW.)
Overview of potentiometer values
This is an overview of the potentiometer values, some of them are linear, some logarithmic, a few antilog. The most obvious candidates for replacement, apart from the glide pot, would be Frequency (100k) and Resonance (100k) for the filter, and Tune (10k).
Jenny – my old 70s monosynth – is a beauty, and I love her knobby face. Her smile, though, has yellowed over the decades. So to make Jenny even more attractive, I decided to try and bleach the keys with hydrogen peroxide.
TL;DR: Effect has been minimal, so it’s probably not worth it. But it was fun. If you try it, make the Retrobright bleaching gel, don’t use a hydrogen peroxide bath. And have a good UV source.
In School, I used to hate chemistry. Did I mention that I used to hate chemistry? Okay, I did (when successfully reviving Jenny’s keyboard contact springs by cooking them)
So here’s what I did.
Happy days! Bob Grieb just sent the newest iteration of his brilliant firmware rewrite for the Oberheim Matrix-1000 for testing – a firmware that breathes new life into the old 8-bit hardware by optimising critical routines for a couple of crucial parameters. Smooth real-time control, very musical; in my opinion, even better than GliGli’s great v1.16 hack – I’ve described the differences in this Gearslutz post – and, in the last couple of iterations, displaying the value of edited parameters.
Well, to change the firmware, you have to open the Matrix and exchange the firmware EPROM for a new one, and doing that, I’ve noticed that this machine was still equipped with its original battery. By lucky chance, I am the proud owner of two Matrixes, and the battery in this one has been doing fine – what kind of super battery did they use in these days, has been in service ever since 1989, and still producing fine 3.0 Volts of power – but I decided to exchange it anyway for a new CR-2032.
As you might know, the battery in the Matrix-1000 is soldered in with most machines, as it was customary with most synths from these days. I guess they never thought that they were building for the anoraks of the future. No problem, I came across battery holders with the same 20.5mm raster used in the Matrix – so no need for drilling, just a simple solder-and-replace job. While soldering, I bridged the backup battery voltage with an external power supply, and I even thought of desoldering the GND terminal first – the rationale behind this being that soldering pens are earthed, so by soldering the positive terminal first you might short out the battery. (Actually bollocks, but I did it anyway.) So I saved my precious memory settings while soldering in the battery holder.
Only to slide in the new battery the wrong way round.
You might not have realised – well, I never do – but the pad connector of a CR2032 is actually the GND terminal, and the housing is Vcc. And is labeled with a clearly visible “+” sign. Well, I put the battery in the wrong way round anyway, thereby effectively losing all my patch and memory settings.
This is, of course, no big deal. I keep moving sound banks between my two Matrixes anyway, so I have pretty recent Sysex backups. Unfortunately, the unbuffered RAM chip lost just enough memory to put the machine into an undefined state – it would no longer boot beyond the init routine displaying the firmware version.
So: How do you factory-reset a Matrix-1000 synth?
I ran into this problem before when I equipped my other Matrix with a new CPU – as you can imagine, this gave me some really bad moments. But factory-resetting an M-1000 is simple:
- Switch off the the M-1000, disconnect it from mains, open it.
- Disconnect the battery. Leave it disconnected.
- Switch the M-1000 on, draining its buffer capacitors. Leave it for a couple of seconds – the completely powerless RAM should be all FF’s now.
- Connect the M-1000 to mains, and switch it on. It should start now.
- Do a calibration run, just to be sure. (Navigate to Ext. Funct., select 7, Enter, select 2, Enter.)
- Reconnect the battery.
Done. Now you may switch off the Matrix, or supply it with fresh patch data.
In case you may have wondered, there is a very simple and effective way to disconnect/reconnect the battery in a running machine: push a strip of paper between the battery and the battery holder’s terminal. Remove it to reconnect.
Looking to get the latest revision of Bob Grieb’s firmware rewrite mentioned below? Click here.
As you may have seen in this blog, I really care about my old Matrix-1000 rack synths. A wonderful piece of retro technology from the final, post-DX7 phase of classic analog synthesizers. There have been attempts to improve on the old 6809 firmware code, most notably by Gligli, a French hacker best known for his SCI Prophet 600 hardware/firmware retrofit. His improved firmware, known as V1.16, introduced a couple of tricks:
- It enabled NPRN control of the Matrix’ parameters by removing a small bug
- It sped up the VCF parameter control by skipping seemingly unnecessary calculations
- It told the synth to discard all parameter edits except the most recent one, thereby keeping the synth responsive.
This is a huge improvement and makes the Matrix feel and behave almost like a modern instrument. But it gets even better.
Matrix-6 project, Matrix-1000 upgrade
Bob Grieb has been analyzing the Matrix-6/1000 code for months. I guess you can say that these days, not even Marcus Ryle does understand the code as well as Bob does. Here is his explanation why the Matrix-6/1000 machines are not real-time responsive to parameter changes in the first place – it is the downside for the immense amont of real-time modulations the Matrix is capable of – 22 fixed modulation paths, 10 matrix modulation slots, 3 envelopes, 2 LFOs and 2 ramps. To implement that in software the programmers used a special technique; a pre-calculated memory area for each voice called the voice update stack. Quote:
This stack contains pointers to code, ptrs to variables, and some pre-computed values. Only pointers to the code needed to handle the enabled features are placed on the stack… This is a very fast and efficient way to update the voice cv’s.
A downside of this approach is that when parameters change, the stacks need to be updated for all six voices. Some parameter changes just affect one number on the stack, so that number can simply be changed very quickly. But some parameters can change the size of the stack. This is a problem, as the update values for that parameter may be in the middle of the stack.
This means moving around chunks of memory to make room for the updated parameters, and it has to be done for all six voices, which takes the ancient 8-bit, 2-MHz CPU a couple of milliseconds. When you turn an external VCF controller, all these parameter changes add up, and the machine freezes for a long, terrible moment, until it catches up. (Read Bob’s full description of the issue here.)
GliGli’s main trick is to tell the machine to discard anything but the last Sysex command. He also noticed that sometimes the stack is rebuilt although this is not technically necessary. And this is the road that Bob has been following. He rewrote parts of the firmware to handle a set of about a third of the parameters much, much faster – including VCF frequency and resonance, DCO PW and LFO control, and VCA level. Changing these parameters with an external controller will be smoother than with older firmware, others – increasing the effect of a modulator in the mod matrix – will still cause the machine to glitch.
Update, 2016: Now that you’ve made it this far, you’ll be glad to learn that Bob made his revised code available for Matrix-1000s and Matrix 6/Rs. You can get a firmware EPROM from him or, if you are in Europe, from me – just follow the links above.
This was originally a project for the Matrix-6, but Bob ported it over to the Matrix-1000. In the process, he also redrew the schematics, so that after all these years, there is finally a legible circuit diagram for the M-1000 on the net. Incidentally, it prompted another guy to scan his printed schematic and send it to Bob, so that there are now not only one usable version but two. (Download link to ZIP archive here.)