New code, explanations, schematics – Understanding the Matrix

Part of the new M-1000 schematic

Enter the Matrix – finally the R/W decoder is legible.

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.)

Securing Jenny’s power supply

Pretty straightforward, this one: Replace the JEN SX-1000‘s fixed power cable with an IEC socket. (Like weird German words? You’ll love this: In German, this thing is called a “Kaltgerätestecker”, more precisely, a “Kaltgeräte-Steckverbinderbuchse”, which translates to “Cold unit connector socket”. Don’t ask me.)

Jenny's backside

No problems here apart from cutting a hole for the socket; I used steel drills to mark the corners of the cutout and then cut the steel with my Dremel tool. Lots of metal dust but fast, and it did the job precisely.

A word on Jenny’s power supply: It’s extremely oldschool – a transformer and a diode bridge generating +/-18VDC, two 7812 regulators generating +12V and -12V, and another 7805 regulator generating the +5V supply rail from the 12V. If you would like your JEN to be a bit more eco-friendly I’d advise replacing those regulators by the 2931CT low-dropout type, but apart from that, there’s hardly any reason to look at the power supply – it’s rather solid and possibly not your primary concern if the synth does not work.

Oberheim Matrix-6 source code file available

Update: Looking for the new, rewritten firmware? Info on how to get the latest version here

There is some (potentially) very good news for Matrix-6/6R owners hoping to get a firmware update – it has come a huge step closer. An extremely experienced engineer has just decided to put his annotated source code file for the Matrix-6 online – you will find it on his page at Oberheim Matrix 6 Firmware. Not the original sources from Oberheim, mind you – they are rumoured to have been lost when someone accidentally dropped the master source disk – but a very carefully annotated listing, reverse-engineered. The engineer who did this even spent the time to mark code that has been re-used in the Matrix-1000 firmware.

So what does that mean to you as a (potential) M6 owner?

The engineer has decided to abandon the project – he thinks that the performance problems of the Matrixes are a result of fundamental design decisions and would need too much effort to get around properly. But his code definitely improves the chances of doing something useful for the code. Someone with skill and spare time might even backport the M1000’s NRPN and matrix modulation Sysex commands into the M6 code.

BTW: My attempts at starting a documented source code file for the Matrix-1000 can be found here, with a hardware and software primer here. If I can find the time, I’ll try to backport a few of Bob’s insights into the M-1000 code.

With the amount of work waiting for me with Jen, I’m glad I don’t own a M-6…

“Dommschwätzer.” (*)

Jaaaa…. kann. man. so. machen.

(*) Ich mag diese Szene: Heinz Becker bedankt sich bei einem hilfsbereiten Baumarkt-Mitarbeiter für den guten Tipp, die gekauften Latten doch zersägen zu lassen, bevor er sie ins Auto packt.

Beware the Kitten-Eating EL Foil!

Actually, this is not about kittens. It’s about renewing the display backlight of an E-MU ESI-32 sampler. Which is quite easy to do if you beware… nah. It is actually quite easy.

ESI-32 opened with front panel removed

The ESI-32, a 16-bit, 32-voice stereo sampler, is from a cache of music machines stored away in a basement for more than 12 years and which I am helping to restore. I used to own an ESI-4000, so I already knew about its internals. This one suffered from a half-dead display backlight so I decided to replace it.
Continue reading

Adding a slightly odd sub-oscillator circuit to Jenny

Let’s start with some good news: Jenny‘s here to stay with me, so I can start some serious modding. The single VCO and the filter design make it hard for her to growl credibly, so I tried to make her bark and her bite a bit tougher, using bits and gates from my basement supplies: adding a sub-oscillator, and pre-filter overdrive.

Jen SX-1000 oscillator/mixer section

Subjenny

The sub-oscillator is simple and has been done by many great modders: You add a divider circuit to produce a one-octave (or two-octave) square-wave sub-oscillator and feed the signal to the unused “Off” terminal of the noise selector switch (over a 100k resistor so that the sub-osc signal is not overly loud). So now when the noise generators are switched off you can use the noise dial to add some deepness.

Continue reading

When exactly did analog synths become cool again?

Have a look at this picture.
First picture of the JEN SX-1000 after it arrived
Do you like what you see? Of course you do.

Analog is cool. Prices for analog gear are consistently going up. Just when processing power, sophisticated audio algorithms and smooth user interfaces have become ubiquitous, manufacturers have started developing and selling new analog synth hardware. Yes, I know: Analog sounds different, you say. Tell you what: I don’t believe it. Reminds me of those types who swore that golden CDs sounded better than the silver ones. It’s not the sound. Like I said: Analog is cool.

Just about thirty years ago, analog became uncool. Yamaha’s digital DX7 synth proved that digital was cheaper, more reliable, and more versatile than the old technology. Analog became harder and harder to sell, even in the discount variety that came without all the expensive knobs and switches, and one by one, the former giants went out of business: ARP. EMS. Oberheim. Moog. The whole Italian synth industry. Poof.

When did analog become fashionable again? The simple JEN synthesizer I am fixing and upgrading may provide an answer to this question. To be honest, there is quite a lot not to like about this machine. Single oscillator: tends to sound thin. Simple filter design: lacking bass punch and proper key tracking. Only one LFO with only one waveform (triangle). Portamento but no legato. Not to mention the no-brainers of modern (ie 1980s ff.) technology: preset memory, MIDI and USB interface, stable tuning.

On Sonicstate.com, there is a review page for the Jen SX-1000. Users may rate their synth from 0 to 5 points, 5 being the top rating. Taking these reviews, you can see the gradual change from fairly mixed reviews to an unanimously positive opinion.

jensx-cool

Granted, there is a systematic bias: why should anybody who didn’t like analogs to begin with acquire and rate a Jen? Still, this graph shows one thing to me: The point where analogs became cool again was somewhere around 2001 to 2002.

Now we know when. If you’ve got the patience, let me argue why.

Continue reading

Reviving Jenny, or: contacts cooked to life

An Italian beauty, fallen on hard times – starting her career as a budget singer, forced out of business, living in a basement for more than a dozen years – and come to my house by accident. Now I am trying to get her back in shape – and to make her voice fuller than it has ever been. Her full name is JEN SX-1000 Synthetone, but she is affectionately known as Jenny.

Jen SX-1000 Synthetone after basic cleaning. Some pot caps missing.

Continue reading

Matrix-1000 Brain Surgery

Shot of opened Matrix-1000 with freshly socketed CPU, runningDremeling and ripping out the brain of a 25-year old vintage machine – I was so Frankenstein yesterday. Luckily, it worked, being the first step to a much improved Oberheim Matrix-1000 running with – at least – doubled system clock, and patched firmware. This takes up the work of Gligli who was the first to hack a faster CPU into the Matrix, and tries to take it one step further. 

Hacking a vintage instrument – my favourite guitar player calls this cruelty. Yet there are good reasons to do it: As I’ve mentioned before, the Matrix’ CPU is actually too slow for what it tries to achieve, but the 8-bit 6809 chip could only be clocked to 2 MHz in its fastest version, and this is it.

So Gligli, a hacker from France known for his Prophet-600 firmware rewrite/retrofit, had the idea of using a 6309 CPU, a chip from the same era that, while maintaining drop-in compatibitily, offered faster instructions and could be overclocked to 4 MHz. So he replaced the CPU and the main oscillator, patched the firmware and – it worked.

Yet there are some issues with Gligli’s solution, in my humble opinion. The Matrix’ peripheral chips are designed to work at 2 MHz; by doubling the CPU clock, they have only half the time to read or write data to the bus. Not all of the hardware is up to this; Gligli’s solution is simply writing everything twice, and that seems to work, but it’s not very trustworthy.

So I’m planning to install a CPU with a custom clock generator that is using asymmetrical cycles to give the peripherals more time to read and write. (I’ll have to build in new oscillator circuitry anyway, as I happened to buy 63C09E CPUs, which rely on external clock generation.) And there’s always the possibility to go even further and replace the CPU by a modern programmable logic chip, an FPGA, that can be loaded with a 6809-compatible core clocked even higher and has proper slowing-down logic to interface the old hardware. More on that later, suffice it to say that I simply want my Matrix’s CPU in a socket. And be it only to be able to revert to the original chip.

Continue reading

Next Project: Korg R3 Aftertouch Hack

Not there yet, but it’s in reach: An Aftertouch, e.g. channel pressure control, retrofit for the Korg R3 synth.

Korg R3 under press

 

I really like the Korg R3. No, there’s more: I bought it second-hand out of very rational considerations, and ‘ve come to love it deeply. There are people who don’t like it for its plastic housing, for the limitations in comparison with its more expensive sibling, the Korg Radias, others hate it simply for not being a first-generation Microkorg. In my experience, it’s an excellent virtual analog synth capable of doing massive bass as well as very unusual pads. It’s versatile, it’s compact, it’s cheap, and it sounds great. And unlike the Microkorg, it’s got a proper keyboard, albeit without aftertouch.

For some reason, the MIDI Thru jack in my R3 stopped working today, which is bothersome, but also a welcome excuse to open the R3’s housing and take a look inside. I had this idea of equipping it with an aftertouch sensor for even more variation and liveliness in playing. And now I’m confident it would work, although I won’t be able to do the mod for some time.  Continue reading