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.
20140430-235200.jpg

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.

Verwandte Artikel:

6 thoughts on “Matrix Modulation control included: iPad editor for the Oberheim Matrix-6/1000

  1. Hey! Einfach wundervoll dein matrix programmer für TB
    Gibt es irgendwo eine Beschreibung zu der genauen Funktionsweise
    der 2. Seite mit der fest verkabelten Modulation ?
    Ich steige dort nicht ganz durch’
    Sehr schade natürlich das deine grandiose Modulations Matrix nicht
    An meinem Matrix6 anwendbar ist ;-(
    Aber trotzdem eine wunderbare Ergänzung beim sounds machen
    Großen Dank dafür nochmal.
    Dieter

    • Kennste das hier – das “Matrix 1000 Cheat Cheet”? :)

      Ansonsten ist die 2. Seite einfach nur der Versuch, die 18 festen Modulationspfade des Matrix abzubilden – jeweils mit einem Regler, der die jeweilige Modulation regelt (positiv und negativ):

      • Frequenzmodulation (= Vibrato) von Osc1 und Osc2 durch LFO1.
      • Pulsweitenmodulation von Oszillator 1 und 2 durch LFO2.
      • Filter-Kontrolle durch Hüllkurven-Generator ENV1.
      • Filter-Kontrolle durch Aftertouch.
      • Lautstärken-Kontrolle durch Hüllkurven-Generator ENV2. (ACHTUNG: BUG in der Matrix-1000-Firmware
      • Lautstärken-Modulation durch Anschlagdynamik (VEL)
      • Modulation der Filter-FM durch Aftertouch und ENV3
      • Modulation der drei Hüllkurven-Generatoren ENV1-3 durch die Anschlagdynamik
      • Modulation der Portamento-Zeit durch die Anschlagdynamik
      • Modulation der Amplitude von LFO1 und LFO2 durch die Ramp-Generatoren
      • Modulation der Frequenz von LFO1 durch Aftertouch
      • Modulation der Frequenz von LFO2 durch das Keytracking (also die gespielte Tonhöhe)

      Die Parameter sind aber im Matrix-6-Handbuch eigentlich ganz gut erklärt…

  2. Just wanted to let you know that I’ve been using your template for over a year with my Matrix 1000 / Matrix 6R and it’s brilliant. Thank you so much for releasing it. It really is the best thing out there for programming these Oberheim modules. Cheers!

  3. Hallo nochmal nach langer Zeit
    Nun gibt’s ja inzwischen für iPad einen ausdrücklich für den Matrix geschriebenen
    Editor namens PatchTouch
    Dieser soll laut Ankündigung ebenfalls die ModMatrix steuern können…
    Nun tut er das aber beim Matrix6 ,also dem Keyboard-Beast ,nicht.
    Der Entwickler ist überzeugt das es nicht an seinem Editor liegt …
    Ich hatte seiner Zeit eine gute Internet Seite gefunden die die Unterschiedlichkeit,
    Der MIDI implementation von matrix6 gegenüber der 6R Variante erläuterte.
    Ich kann die Seite leider nicht mehr finden…
    Hast du die entsprechenden innfo’s?
    Ich fände natürlich großartig wenn irgendjemand für den Matrix6
    Die ModMatrix zähmen könnte… ;-)
    Dank und Gruß
    Dieter Gostischa
    Axioton Hamburg
    Leider

    • Hallo Dieter, den “PatchTouch”-Editor kenne und schätze ich ja seit seiner Frühphase, und er hat ja gerade eine grundlegende Überarbeitung erhalten – zum Beispiel ist endlich die Patch-Verwaltung dazu gekommen.

      Bei der Mod-Matrix muss man ein wenig differenzieren: Tatsächlich gibt es beim Matrix-6 keine Möglichkeit, einen einzelnen Parameter der Mod-Matrix zu verändern – die entsprechenden Befehle, der entsprechende Code kam erst mit dem Matrix-1000 hinzu, und im Code-ROM ist auch gar kein Platz mehr. (Kennst Du die großartige Weiterentwicklung der M6-Firmware von Bob Grieb?) Von daher hat der Entwickler Recht.

      Was aber geht, ist: bei einer Änderung in der Mod-Matrix immer den kompletten Patch übertragen – da eine Veränderung eines Matrix-Parameters ohnehin immer eine kleine Denkpause erfordert, ist das auch nicht weiter schlimm. Und es ist auch der einzige Weg, mit den Bugs in der Firmware umzugehen; mit den beiden Parametern, die man bei ungepatchten Matrixes einzeln nicht ansteuern kann: ENV1 Sustain und Env2->VCA.

      TL;DR: Natürlich kann man die Mod-Matrix auch bei einem M-6 per Editor verändern. Es ist nur umständlicher.

Leave a Reply

Your email address will not be published. Required fields are marked *