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.
Category Archives: Maschinelles
Taming Arturia’s Beatstep: Sysex codes for programming via iPad
Nice. New. Toy. Arturia’s Beatstep controller is a steal for 99 Euros – it just feels great. Large, solid pads, smooth, reassuring encoders. Did I mention there’s a 16-step sequencer included? And a CV/gate interface? Must-have. I sold my QuNexus for this.
Just like the QuNexus, it is an ideal extension for iPad music. And just like the QuNexus, Beatstep needs to be programmed via a controller program to work. At least Arturia had the common courtesy to include a Mac version of the controller software, still it is a nuisance for iPad users like me that they have to use a computer just because one key sends the wrong note and triggers the wrong event.
So I thought about building a small controller panel for TB Midi Stuff, the same app I used for my Matrix-1000 controller. A bit of work with the controller software and a MIDI monitor gave me what is needed for that: the Sysex codes to control the Beatstep’s behaviour. May be some time until I get round to building that panel, in the mean time there you are. You’ll find the very first version of my iPad Beatstep Tool for download in the TB Midi Stuff forum. No, don’t thank me, Arturia.
Anyway, here’s the MIDI command table for the Beatstep, in case you want to do your own programming.
V1.3, last update 10 November 2016, with lots of additional info by Richard Wanderlöf.
Keytek CTS-2000: Fondly remembering a truly horrible synth
In the late 80s, I decided to spend serious money on my first serious synthesizer. Unfortunately, I did not have any money, so I started scouting the ads and mailing lists of lot sellers. There was this one company that, obviously, had good connections to the dying Italian synth industry, and I clearly remember the magnificent Elka Synthex on top of one of those leaflets, a true monster of an analog synth, somewhere on the path between “hopelessly old-fashioned” and “awed classic”, on sale for just over 3000 Deutsche Mark, if I remember it correctly.
I ended up spending 1500 Marks on another Italian Synth: The Keytek CTS-2000 from Siel, later bought by Gibson, even later bought by Roland just to close them down. [Update, 28-May-17: Interesting additional info about what became of Siel after the Keytek is to be found in the comment by microbug.]
From today’s perspective, this machine was not much of an improvement over my previous means of sound generation, the Casio CZ-101, a digital synth with its very own character. But then, the CZ seemed unbearably cheap and nonsensical to me, with its small keyboard, and its four-voice limit. The CTS-2000, on the other hand, was an eight-voice affair with a proper, velocity-sensitive keyboard. And the technology! Sampled waves! Dynamic wave manipulation! Multitimbrality! Sliders for real-time parameter control! Six-stage envelope generators! And! Analog!! Filters!!!
A great concept. There was, to quote another classic from the era, just one tiny little flaw.
There were a few questionable decisions made in the design, as you can read here. It also lacked the processing power to do what it tried to achieve; its TMS-7002 brain was too weak. But the worst thing was: The synth sounded horrible. What I had hoped for was classic analog punch with a digital, modern twist. What I got was a dull third-rate ROMpler. One of the best sounds was no analog pad but a sampled ripoff of a DX-7 slap bass sound. Despite its analog filters, the sounds were thin and harsh, and even the metallic sounds did not shine but came across flat and dull. All high frequencies seemed to be missing.
Dull by design – the central flaw
I tried to make up for the lack of overtones by buying a small enhancer, a device meant to generating additional overtones, and it sort of helped with the piano sounds. But the overall sound remained disappointing, and later, I realised what the problem was: the output circuitry dulled down the sound. A crude and uninteresting low-pass filter removed all signs of life from the signal.
Thinking about it, this is due to the limited technology. When you work with samples, you get quantization noise – the difference between the original wave and the wave generated with, say, an 8-bit resolution. [EDIT: Thanks to a comment by Mikkel Karlsen I learned that the Keytek was built around two SGS M114A chips, digital oscillators based on wavetable ROM, and I suspect that they were used with the lowest possible resolutions of 16 steps per wave cycle, so you would actually get Q-noise three octaves above the pitch frequency of the wave.] Quantisation noise is noise with the frequency of the sample playback, meaning that with lower sampling frequencies, say, around 10kHz, you will get an audible hiss in the signal. But the feeble hardware is incapable of high sampling frequencies. Think of it as a permant, built-in bitcrusher.
The designer seem to have feared that noise, so they added the low-pass filter to the outputs. I actually quite liked it, so I removed a capacitor from the circuit and killed the filter. It sounded a lot better to me after that.
Moving on
Still, the Keytek remained an uninspiring machine – and I was really glad to sell it and to move on to a really decent FM synth, the Casio VZ-1. (You see, I’ve got a soft spot for underdogs.) And all the analog warmth I’d ever need soon came from my Matrix-1000 – the one that only recently has undergone brain surgery. And the CTS-2000 went, never to return.
I had all but forgotten the Keytek, but rediscovered it while doing a lot of research on the Matrix 1000’s peers, the generation eventually killed of by the DX-7 and the D-50: 8-bit machines with an analog heart like the Polysix or the Elka EK-22 (another machine that I could have ended up with, and that would have made me much, much happier). These machines keep intriguing me, and although there is quite a good argument to be made that they were closer to what we search in creating sounds – I urge you to read Bob Weigel’s thoughts on the age of Analog and how it ended – I guess it’s just nostalgia, a longing for the time when the world was great and the technology was a marvel.
So I’m remembering the Keytek with fondness and a lot of sympathy for its engineers. I would never take it back, though – even nostalgia has its undisputable limits.
Matrix-1000 Brain Surgery
Dremeling 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.
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.
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
Insert ___ here – new connections for an old mixer
Look: My little old Behringer Eurorack MX1604A mixing console has four insert jacks now, just what you need for a four-channel compressor. After a day spent with sick kids, a little soldering and drilling felt just right.
I have been shopping on eBay. Looking for a reverb to go with my rediscovered Oberheim Matrix synth, I acquired a rack containing a Lexicon MX, and a four-channel compressor. Lucky me.
This is when I noted that my mixer has no inserts.
Well, I fixed it. Took me about 3 hours. You need: 4 6.3mm stereo jacks, shielded 3-wire cables, soldering iron and being prepared to use it, a 12mm steel drill.
I’ve put my modded IO Dock on eBay!
It’s the first ever IO Dock outside Alesis’ labs to feature a USB hub, it’s the most successful project in this blog, and I am selling it.
It was a simple hack on a crazy notion, and I’m really happy how it all turned out, getting noted by Discchord and Synthopia and others. More importantly, it’s a simple solution for a real problem, and it just works.
I’m also a lot more confident that it’s a good hack: The modified IO Dock has been in use at home and in the band for over a year, and the hack has been successfully replicated by some very smart hackers – over at Churchnerd’s blog you’ll not only find a description how to do it that is way better than mine, he also found a simple and elegant way to make the modded dock work with the iPad Air.
So why am I selling? I’ve got a good reason: Money. :) Apart from that, I am using an iPad Air now and switched over to another interface – a third-hand Novation X-Station keyboard/synth/fx combi with class-compliant USB Midi and Audio in/out. Best solution in the practice room for the time being, and if I’m getting a good price on my IO Dock, I might go out and get a Focusrite iTrack Dock to use at home.
However, I encourage you to try the hack for yourself, and I am confident that it will work with the new, lightning connector enabled, IO Dock 2. (Update: unfortunately, it doesn’t.)
A couple of things I have learned:
- Some people are really scared by the bullshit warnings that advise you not to open the housing.
- Anybody who can solder a cable can do it.
- The hub matters. I was lucky to pick an active hub that works in my setup, a Belkin F5U404. If the hack does not work, and you have excluded switched in/out ports and messed-up USB connections as the cause, you may try another powered hub.
- Use connectors, don’t solder it into the IO Dock – although you need 2mm pinstripe plugs/sockets like these that may be a bit hard to find, it is worth the effort: you’ll be able to test and reverse the hack.
- Lab-test first. Dremel later. Before soldering or dremeling anything in the Dock, start with a simple workbench test – open the Dock, unplug the connector for the iPad, connect it to the hub with the modified cables you’ve made.
- If you overload the IO Dock by drawing too much USB current, it just shuts down. So far, no harm has been done, still I think it’s a good idea to be careful and never connect more than one 500mA device.
- When you are hacking the IO Dock anyway, you might think about adding a power-on LED connected to the hub’s 5V supply – I always regretted not having done this.
One thing left to do: Many, many thanks for all the feedback, the ideas and the improvement. It made it all worth while. Whatever the turnout of my auction is.
Matrix Modulation control included: iPad editor for the Oberheim Matrix-6/1000
Remember what I wrote about my attempt to build an iPad editor for my vintage Matrix-1000 analog synth with TB Midi Stuff? That it’s a pity that, due to the rather eccentric MIDI implementation of the Oberheim machine, I couldn’t build a controller for the modulation matrix? Tell you what: it works now.
TB Midi Stuff – which is an absolutely great universal kit for building MIDI controllers, looking great and much cheaper than Lemur – has recently gained a feature that allows to send three-variable Sysex commands. And this is important – let me tell you why. (BTW, for those who can’t wait: Download links to the Matrix-1000 editor panels can be found in the TMBS forum. [here – v1.03, “Open with…” TBMS on the iPad])
Update, January 2022: TB Midi Stuff has been pretty much abandonware for years now; although you can still use – and buy – it, it is more and more at odds with newer iOS versions. Use at your own risk. And you might try badgering Fabien Manchec, the developer, about his promise of an update from mid-2020, but be kind – solo developers don’t make a fortune on those niche apps.
Let me explain the problem, and how to solve it with TBMS.
Unfortunately, this won’t work with Matrix-6s – they do not understand the sysex commands needed to program the mod matrix directly.
The Oberheim’s matrix control – one command, three parameters
As I’ve written before, the Oberheim Matrix-1000 has a couple of quirks and issues, especially concerning the modulation matrix, the analog synth’s strongest asset. Almost any other sound parameter within this synth can be controlled individually with a tailored MIDI Sysex message (something like: F0 10 06 06 1A xx F7, translating as “Listen synth, control coming up, setting vcf, to VALUE, thatsit”); the matrix modulation paths are set by a command sequence like this: F0 10 06 0B 01 xx yy zz F7, translating to “Listen synth, modulation coming up, setting modulation path 1 now, FROM, BY, TO, thatsit.” What this means is: If you want to have full control over the modulation matrix, you have to be able to craft a Sysex message with at least three parameters.)
TBMS from version 2.2.4 on has a feature to achieve this: Masked variables – variables where you can set the bits you want to control. They can be up to 21 bits large – equalling three 7-bit MIDI values. So instead of sending three independent values, you tell TBMS how to craft a 21-bit variable containing the three parameters – and send this.
Step by step:
-
- Define a global variable by entering Edit mode, selecting Page Settings in the upper right corner, scrolling down all the way, and adding a user variable. I’ve called it “mod0”, for modulation path 0; I’ve made it an internal variable, don’t worry about assigning it a range and max and min values for now.
- Now, define a controller for the third of my three parameters – MIDI parameters are 7 bit only, e.g. between 0 and 127, equalling a hexadecimal value of 7F. Hexadecimal numbers are what you use in Sysex and masked variables, so what you do is add a Variable Message, select “Set Variable with Mask”, and set the mask to 7F. (My values are 0-32, so no setting the “Signed” switch for this parameter. Remember to set the “Minimum Value” and “Maximum Value” to 0 and 20.)
- Define a controller for the middle parameter – just as with the one above, only with a slight modification: Set the mask to 3F80. — Why is that? It’s 7F shifted left by 7 bits, and as you remember, parameters in MIDI are 7 bits. One noteworthy thing about the middle parameter: In my case, it takes values between -63 and +63, so I’ve set the “Signed” switch here and set the “Minimum” and “Maximum” sliders to -63 and +63.
- Only the most significant parameter missing now: Add another control for the first parameter, shift the mask by another 7 bit, and get 1FC000. Set Signed, Minimum and Maximum as desired (I used a 0-20 range here.)
- Go back to Edit mode, call up the Page Settings, scroll down to your user variable, and add a MIDI message to it: Make it a Sysex message. Set Variable Size to three-byte and – this is important – Message Format to Linear (Little Endian). “Little Endian” means that the lower values are sent first; as we’ve made our first controller control the lower 7 bits, this is just right. Set a Sysex message, which in my case is “(F0)10060Bxx(F7)”.
I guess there are not that many people who have followed my that far – but if you have, you may have noticed that the variable is supposed to transmit 3*7=21 bits of information, resulting in an integer range of 0 to 2,097,151. You can actually set that value in the Sysex range control setting,.
So whenever you tweak the controls for Matrix modulation path 0, TBMS constructs a three-byte, 21-bit message, which it then sends as part of a Sysex control message.
Enjoy!
The most recent version can be found in the TBMS forum. Dropbox link to V0.4 here and here. Please remember that there are two nasty bugs in the Matrix-1000 firmware – you cannot control ENV2->VCA and ENV1 Sustain via TBMS in consequence -, and that the editor only sends Sysex, it does not receive and interpret it.
Reclaiming the Matrix: new life for an old beast via iPad control
Update: there is now a working editor template for editing Matrix-1000 sounds via the iPad with TB Midi Stuff. Other than stated below, it is now possible to control the modulation matrix as well – read more about it here. The buggy parameters unfortunately still won’t work.
I’m just rediscovering a 25-year old piece of analog hardware: my Oberheim Matrix-1000 synth. It’s worth rediscovering: The analog circuitry is still cutting through any mix; it’s a nasty classic. And it’s a simple 1 HU 19” rack unit; power supply included, no wall warts.
So yes, for a vintage piece of equipment, it’s handy. Unfortunately, the Matrix-1000 is a pure expander module without a single controller – no real-time tweaking the sounds to your desire. Which is a massive disadvantage to an otherwise extremely clever and versatile machine, as I’m not the first to discover. Before Access started to make very expensive top-quality VA synths, they did a hardware controller; you’ll occasionally find one on eBay for around € 700. Translating as: “It’s a monster if you can only get a controller for it.”
My favourite digital music device is the iPad. So I’ve started making my own iPad controller interface, based on the cheap TB Midi Stuff controller kit. It’s an early version, still some testing to be done. And there’s a couple of things you need to realize about the Matrix-1000 before using it with an external editor.
Wie kommt das in die Hosts-Datei?
Kein iPad-Update über iTunes – statt dessen ein Tablet im Wartungszustand und beim Versuch der Wiederherstellung penetrant “Error 3004”. Wieder einmal ist die Apple-Fehlermeldung selbst null hilfreich, wieder einmal kommen über Google Antworten: ziemlich dadaistische und dann auch eine nützliche.
Tatsächlich: in der HOSTS-Datei – eine Art Sammlung von Umleitungs-Schildern zwischen meinem Computer und dem Internet – findet sich der ominöse Eintrag, der Zugriffe auf gs.apple.com auf 127.0.0.1 umleitet – wenn ich das richtig verstehe, auf einen Server auf meinem Rechner selbst. Ist ja schnell entfernt (und dann läuft alles wieder) – aaaber wo zum Geier kommt so was her?
Wieder einmal einsehen müssen, dass ich leider nicht zu den 1% zähle.