Resetting a Matrix-1000 with a new battery

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 hackI’ve described the differences in this Gearslutz post –  and, in the last couple of iterations, displaying the value of edited parameters.

(I used Modstep as a drum machine/sequencer on the iPad, and my Matrix-1000 control panel for TB Midi Stuffother than the new iPad editor, it does produce smooth parameter sweeps.)

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.

Foto 10.01.16, 16 43 46

The battery in its new holder, now in the correct position: the plus terminal facing upwards

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.

Foto 10.01.16, 16 44 19In 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.

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

Dead Novations Society

No, that Bass Station you are trying to play isn’t dead. It’s just gone… to an undefined state.

  
I had a Novation Bass Station that did not produce a single sound. Although I could confirm that MIDI was still working – the device was sending Key ON/OFF and CC messages – and the LFO LED was blinking and responded to parameter changes, the synth was mute. And some research on Ebay and on the net confirmed that there are lots of Bass Station owners with the very same problem.
Continue reading

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.

There is a true Oberheim Matrix editor for iPad now. And yes, it’s worth buying it.

If you have found this blog searching for the Oberheim Matrix-6/1000 synthesizer, you may already know that I still haven’t given up on breathing new life into hardware and software of this wonderful machine, and that I have made a controller template for the iPad. A controller, mind you, not a true editor – but a tool to control each parameter in a sound preset via a dedicated touch control, and pretty much without alternative.
Patch Touch app screenshot - all parameters of a sound on one page
No longer – there is a true Matrix editor app in the Store now, Patch Touch by Coffeeshopped, LLC. How does it compare? Is it worth the 15 30 Dollars or Euros? Chadwick, the guy behind Coffeeshopped, was so kind as to send me a download code for his app, and to comment on an early draft of my observations, so you’ll find my remarks updated with his comments here.
Continue reading

Could you also patch an Alesis IO Dock II?

Is it possible to retrofit an Alesis IO Dock II with an internal USB hub, just like I did with my IO Dock 1? TL;DR: Some have tried and failed – seems like Alesis deliberately switched the code for this hack off. 

01

This photo was sent to me by Blek in the Czech Republic who asked that very same question. He has taken a look inside his IO Dock II and noted that it features an all-new PCB, so my original hack won’t work. And of course there is no guarantee that the prerequisite for the original hack is still implemented in the IO Dock II: the ability to function not only as a USB bus host for the iPad, but as a USB bus slave device, with the iPad working as the bus master.

The good news is: It is simple to give it a go, as Alesis took extra care to label the locations of the USB bus signals:

iodock2

So here is what you do to try it:

  1. Get a male-female pair of plugs matching the connector in question. Possibly a 12-pin version of these connectors, so as in the original hack, 2mm pin grid stripes could work. They are a bit hard to come by, but it is possible.
  2. Solder connections from male to female for all lines but 6 and 7 – the D- and D+ USB data signals.
  3. Get a suitable UBS2.0 hub – I used a Belkin F5U404; you might have to try a couple of hubs if that one does not work.
  4. Take the cable that is meant to connect the hub to the computer – it should have a standard USB plug on one end and a USB mini connector on the other end – and cut it in half. This is the only non-reversible action you are taking, but as it is easy to buy a replacement cable, there is not much harm done if it does not work.
  5. Take the cable half with the USB A-type plug, for connecting it with the computer. Solder the cable wires to the connector that goes into the IO Dock side as follows: Red (Vcc) -> pin 1, White (D-) -> pin 6, Green (D+) -> pin 7, Black (GND) -> pin 8.
  6. Take the other cable half with the USB mini-B plug for connecting to the hub and solder it to the iPad side, i.e. to the connector that is leading to the iPad connection cable. Once again, solder red to 1, white to 6, green to 7, and black to 8.
  7. Do some checking for connections and possible short-circuits. Believe me, it’s worth the effort.
  8. Unplug the IO Dock board connector for the iPad. Insert your freshly-made adapter.
  9. If it works, make a video of it. Become world famous. :)

Wiring diagram

Wiring the USB hub connector: Once again, the trick is having the iPad work as USB host rather than as a slave device, and the IO Dock as the slave rather than as the host. Use your hub’s connector cable, cut in half, and solder the color-coded wires to the connectors as shown.

Sorry for my rather artistic impression of the adapter, hope it gives you the right idea. Pin 1 is to the left, pin 12 to the right. IO Dock side is up, iPad connector side is down.

Just to be sure:

  • I’d strongly advise you to solder and try out the adapter rather than soldering any wires to your IO Dock. It is a good thing to keep that sort of stuff reversible. For this reason, don’t start dremeling before proving that it actually works…
  • …which I won’t guarantee you. Mind you, I don’t even own an IO Dock any more. If you start doing this, you should know what you are doing.
  • Please understand that the base for this hack is a feature that Alesis seems to have implemented deliberately into the first IO Dock (see Dan Radin’s comment): the ability to work as a USB slave to the iPad, in addition to normal operation, where the IO Dock works as a host for the iPad. If the IO Dock does no longer do that, you can try to rotate the USB hub, but that’s about it.
  • Please write me back with your experiences. Please don’t get on my tits with any attempts to make me do this hack for you, or repair your IO Dock if anything went wrong. (Oh my god – I just realize that bullshit warnings are obviously contagious.)

It’s worth giving it a try, isn’t it?

Thanks to Blek for allowing me to use his pictures.

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