Aktuelle Version: V1.20 vom Februar 2016, 16-bit-Prüfsumme: $21EC. Verkauf mit Erlaubnis des Autors; er erhält für jeden Chip eine Lizenzgebühr. Bestellformular hier.
Installationsanleitung und Handbuch – (English version here)
[toc]
TL;DR – Für Techniker und Bastler
- Den Chip mit der Firmware in Sockel U804 einsetzen.
- Zeigt beim Einschalten die Versionsnummer „120“ an.
- Beschreibung der Änderungen im Abschnitt „Neu in dieser Version“.
- Technische Funktionsbeschreibung unter „Wie es funktioniert“.
Warum Sie einen Chip bekommen haben – und warum er erst eingebaut werden muss
Das Programm, das den Matrix-1000-Synthesizer zum Laufen bringt, nennt sich die „Firmware“. Wenn Sie den Matrix einschalten, zeigt das Display kurz die Software-Version an – die letzte offizielle war V1.11. Gerüchten zufolge hatte Oberheim es geschafft, den Quellcode zu verlieren, den man zur Software-Entwicklung braucht, aber wahrscheinlicher ist, dass in einen Synthesizer, der funktionierte und sich verkaufte, keine Entwicklungsarbeit mehr gesteckt werden sollte. Das ist schade, denn die Firmware V1.11 enthält ein paar kleine Bugs – mehr dazu unter „Neu in dieser Version“ – und sie reagiert nicht schnell genug: Wenn man über einen externen Controller an den Parametern schraubt, gerät der Synthesizer ins Stottern.
Heutzutage sind wir gewöhnt, ein Update einfach herunterzuladen und vom Computer aus in das Gerät zu transferieren. Dort wird es dann in so genanntem Flash-Speicher abgelegt – das sind dieselben Chips, die auch in USB-Sticks ihren Dienst tun. Zur Zeit, als der Matrix-1000 entwickelt wurde, gab es sie noch nicht. Damals wurde die Programmierung in Speicherchips abgelegt, die im Werk programmiert werden mussten – also muss man diese Chips austauschen, wenn man neuere Software nutzen will.
Die neue Firmware wird in einem so genannten EPROM geliefert (die Abkürzung steht für „Electronically Programmable Read-Only Memory“, elektronisch programmierter Nur-Lese-Speicher). Dieses enthält 32KByte Daten – rund ein Millionstel dessen, was ein 32GB-USB-Stick heutzutage bietet. Die Daten werden mit einem speziellen Gerät nahmens Prommer in den Chip geschrieben, und wenn man ihn überschreiben will, muss man ihn vorher mit harter ultravioletter Strahlung löschen. (Nein, das brauchen Sie nicht zu tun.)
Wie man die neue Firmware in die alte Maschine einbaut
Was Sie brauchen: Einen Kreuzloch-Schraubenzieher, um das Matrix-Gehäuse zu öffnen, einen kleinen flachen Schraubenzieher oder ein Messer, um den alten Chip zu lösen.
Das Matrix-Modul vom Netz trennen. Alle schwarzen Schrauben aus dem Gehäuseblech schrauben und den schwarzen Blechdeckel abnehmen. Der Chip, den Sie austauschen müssen, befindet sich in der vorderen linken Ecke der Elektronik in einem Sockel mit der Bezeichnung U804 – direkt neben dem größten Chip der Elektronik, dem Prozessor. Die Firmware ist direkt links daneben.
Hebeln Sie den alten Chip vorsichtig aus seiner Fassung – mit einem kleinen Schraubenzieher oder mit einer Messerspitze. Platzieren Sie den neuen Chip mit der V1.20 richtig herum – eine kleine Kerbe zeigt, wie Sie den Chip einbauen müssen: die Kerbe muss zur Rückseite des Synthesizers ausgerichtet sein, nicht zur Frontplatte hin.
Vorsicht: Es ist leider sehr einfach, beim Einsetzen des Chips eins seiner Beinchen abzuknicken. Am besten machen Sie es so: erst die eine Reihe der Beine in die Fassung setzen, dann etwas auf die gegenüber liegende Kante des Chips drücken und vorsichtig so biegen, dass auch die andere Beinchen-Reihe in die Fassung passt. Kontrollieren, dass alle Beine sitzen – und erst dann den Chip in den Sockel drücken.
Sollten Sie doch ein Beinchen verbogen haben, müssen Sie den Chip wieder aus dem Sockel nehmen und das Beinchen vorsichtig mit einer Zange wieder gerade biegen – wenn ein Bein keinen Kontakt hat, funktioniert der Synthesizer nicht mehr.
Wenn der Chip im Sockel sitzt, schalten Sie den Synthesizer ein – wenn er beim Einschalten „120“ anzeigt, die Versionsnummer der neuen Firmware, ist alles in Ordnung.
Was ist neu in dieser Version?
Die neue Firmware unterscheidet sich von der V1.11-Werksfirmware in folgenden Punkten:
- Bugs korrigiert, die die MIDI-Kontrolle der Parameter 29 (Env2->VCA) und 53 (Env1 Sustain) verhindert haben (von Nordcore mit der V1.13 eingeführt)
- Verstimmung der Einzelstimmen über die MIDI CC #94 ändert die Breite des Sounds im Unisono-Modus (von GliGli mit V1.16 eingeführt)
- Parameteränderungen werden auf der LED-Anzeige dargestellt: der aktuelle Wert für den veränderten Parameter wird angezeigt, bis der Synthesizer die nächste Note empfängt
- Parameteränderung über den MIDI-NRPN-Standard – für dynamische Soundveränderung mit einem MIDI-Controller oder einem Sequenzer. (Mehr über NRPN im Matrix hier.)
- Soundbeeinflussung beim Spielen: 20 häufig benutzte Sound-Parameter sind jetzt in Echtzeit steuerbar; ohne Sprünge, ohne das Instrument ins Stottern zu bringen. (Mehr dazu gleich.)
Alte Hardware, neue Schnelligkeit – wie geht das?
In den Matrix-Synthesizern berechnet der Prozessor die Modulationen – wie in den meisten digital kontrollierten Analogsynthesizern. Alle 20ms aktualisiert das Programm die zwei LFOs, die drei Hüllkurven, die Ramp-Generatoren und berechnet die Auswirkungen der namensgebenden Modulations-Matrix, für alle sechs Stimmen des Synthesizers. Aus den berechneten Werten werden Kontrollspannungen erzeugt, die die analoge Klangerzeugung steuern.
Das Problem: da hat die alte Hardware eigentlich zu viel zu tun. Selbst mit dem vergleichsweise gemächlichen Takt von 20ms, der auch für die bekanntermaßen nicht eben flinken Hüllkurven des Matrix verantwortlich zeichnet, ist das mehr, als der Jahrzehnte alte 8-Bit-Prozessor bewältigen kann – schon ein Handy hat heute ein Mehrtausendfaches an Rechenleistung. Schaffen kann der Prozessor die Berechnungen nur mit einem Trick: mit Tabellen, in denen vorberechnete Werte abgelegt sind. Wenn ein Parameter verändert wird, müssen die Tabellen neu berechnet werden, für alle Stimmen einzeln – und das braucht Zeit. Man kann sich die Matrix-Firmware als einen sehr gründlichen Beamten vorstellen, der Anträge abarbeitet – Antragsformular Nr. 24, Änderung der Resonanz – und auf dessen Tisch sich die Anträge stapeln, wenn zu viele reinkommen. Wie er darauf reagiert: er lässt die Antragsteller warten – der Synthesizer stottert und friert für Augenblicke ein. Matrix-Besitzer können ein nicht sehr schönes Lied davon singen.
Der Unterschied zwischen GliGlis V1.16 und Bobs V1.20
2014 fand ein französischer Hacker namens GliGli einen eleganten Hack – er erteilte dem Antragsbearbeiter im Matrix-Synthesizer die Anweisung: wirf alle Anträge bis auf den jeweils letzten weg. Das kann zwar dafür sorgen, dass die Werte beim Schrauben am Sound hörbar springen, sorgt aber dafür, dass der Synthesizer sich nicht mehr aufhängt – auf einmal kann man die Sounds wenigstens quasi in Echtzeit verändern. (Die Firmware mit diesem Hack enthält außerdem noch die Möglichkeit, die Stimmen gegeneinander zu verstimmen, trägt die Versionsnummer V1.16, und kann auf GliGlis Blog heruntergeladen werden. )
Kurz: Die V1.16 beschleunigt den Matrix, indem nicht abgearbeitete Befehle zur Parameteränderung gelöscht werden. V1.20 beschleunigt die Verarbeitung der Parameter. (Und dann gibt’s da noch dieses nette Zusatzfeature, dass der Wert eines veränderten Parameters auf dem Display angezeigt wird.)

How VCA2 behaves under V1.20 (blue line) vs. under V1.16 (yellow line): Instead of a sudden jump, a slow sweep. Image taken from tauntek.com/Bob Grieb
Um auf das Bild vom Beamten in der Matrix-Soundverwaltung zurückzukommen: Die Einschränkung „quasi in Echtzeit“ fällt bei der V1.20-Firmware weg, weil sie einen anderen Ansatz verfolgt. Sie ersetzt den Antragsbearbeiter im Matrix gewissermaßen durch einen trainierten Spezialisten, der die häufigsten Anträge viel schneller abarbeitet. Sie können in Echtzeit verarbeitet werden und stapeln nicht seinen Arbeitsplatz zu. Das wird durch clevere Optimierung von Code erreicht, der schon selbst von sehr cleveren Programmierern stammt – das Ganze ist also durchaus eine Errungenschaft, über die es auf der Webseite des Autors der Firmware, Bob Grieb, noch mehr zu lesen gibt.
Damit wird Soundschrauben in Echtzeit möglich – über das hinaus, was Einträge in der Modulations-Matrix erlauben. Und es gibt keine Sprünge – diese Parameter werden mit der höchst möglichen Verarbeitungsgeschwindigkeit von 20ms interpretiert:
- 1 DCO1 Freq by LFO1 amt
- 3 DCO1 Init PW
- 4 DCO1 PW by LFO2 amt
- 7 DCO1 Fixed Mods
- 9 DCO1 Click
- 11 DCO2 Freq by LFO1 amt
- 13 DCO2 Init PW
- 14 DCO2 PW by LFO2 amt
- 17 DCO2 Fixed Mods
- 19 DCO2 Click
- 21 VCF Init Freq
- 22 VCF Freq by Env 1 amt
- 23 VCF Freq by pressure amt
- 24 VCF Init Resonance
- 25 VCF Fixed Mods
- 27 VCA 1 Init Amt
- 28 VCA 1 by Vel amt
- 30 VCF FM Init amt
- 31 VCF FM amt by Env 3 amt
- 32 VCF FM amt by Pressure amt
Eine Gesamtliste aller Matrix-Parameter mit ihrer Nummer und ihren Wertbereichen hier (PDF).
Die anderen Parameter werden nicht beschleunigt verarbeitet, was schlimmer klingt, als es tatsächlich ist: Beispielsweise lassen sich die Lautstärke- und Filter-Hüllkurven immer schon gut beim Spielen verändern. Ins Stocken kann der Synthesizer immer noch geraten, wenn man an der Modulationsmatrix schraubt, oder wenn man sehr viele Programmwechsel-Befehle hintereinander schickt.
Alles in allem erlaubt die Firmware eine sehr musikalische Bearbeitung von Sounds im Proberaum, im Studio oder auf der Bühne. Mit einer MIDI-Faderbox am Klang zu drehen fühlt sich genau so an, wie man es heute von einem Synthesizer erwartet.
Übrigens: Es gibt einige Editor-Programme, die die Probleme der Original-Firmware dadurch umgehen, dass sie sich ähnlich verhalten wie GliGlis Hack, genauer gesagt: nur Veränderung eines Parameters nur den letzten Wert übertragen und nicht alle Veränderungswerte. Was heißt: Um Sounds in Echtzeit beim Spielen zu beeinflussen, sind sie ungeeignet. Wenn ich statt dessen auf meine Controller-Oberfläche für die iPad-App TB Midi Stuff und auf das Template für die Novation X-Station verweisen dürfte?
Wie man NRPN verwendet
NRPN (Nicht-Registrierte Parameter-Nummern) sind ein MIDI-Standard zu Übertragung von Soundparametern an einen Synthesizer. Sie ersetzen die Kontrolle mittels herstellerabhängiger SYSEX-(SYStem-EXclusive)-Befehle und können mit der neuen Firmware jetzt alternativ eingesetzt werden. Die Vorteile der NRPN-Steuerung des Matrix sind:
- Echtzeit-Kontrolle über Soft- und Hardware, die keine SYSEX-Befehle sendet – MIDI-Sequenzer, Schnittsysteme und Controller können häufig nur für den dynamischen Einsatz von NRPN konfiguriert werden, was jetzt auch mit dem Matrix möglich wird.
- Anders als die SYSEX-Befehle für den Matrix sind NRPN-Befehle an einen MIDI-Kanal gebunden – man kann also einen Matrix-Synthesizer im MIDI-Verbund gezielt ansteuern.
Was NRPN mit dem Matrix nicht leistet:
- Durch NRPN wird nichts schneller – da der Synthesizer Parameter-Änderungen via NRPN und via SYSEX genau gleich umsetzt, ergibt sich kein Zeitvorteil.
- NRPN reduziert nicht die MIDI-Datenmenge, im Gegenteil. Ein SYSEX-Befehl zur Änderung eines Matrix-1000-Klangparameters ist 7 Byte lang, eine vollständige NRPN-Nachricht umfasst 9 oder sogar 12 Bytes – außer, der Sequenzer bzw. die Faderbox ist in der Lage, bei Parameteränderung reduzierte NRPN-Meldungen zu senden, was die meisten MIDI-Controller nicht tun.
- NRPN ermöglicht keine feinere Parametereinstellung auf dem Matrix. Zwar wurde der NRPN-Standard dafür geschaffen, eine wesentlich empfindlichere Kontrolle zu ermöglichen – mit einer Auflösung von 14bit, 16.384 Schritten, statt der bei MIDI-CC-Befehlen üblichen 7-Bit-Auflösung mit nur maximal 128 Schritten – aber dadurch steigt die Auflösung der Matrix-Parameter nicht.
Für das Folgende setze ich voraus, dass Sie mit MIDI-Befehlen grundlegend vertraut sind, insbesondere mit MIDI-CC-(Control Change)-Nachrichten.
So sieht eine NRPN-Kontrollsequenz für den Matrix-1000 mit der neuen Firmware aus:
- Sende eine MIDI-CC-Nachricht Nr. 99 mit einem beliebigen Wert, z.B. 0. (Oder im Hexadezimal-Code, den Programmierer verwenden: Controller 63h.) CC99 überträgt den oberen Teil der Parameternummer, das MSB (Most Significant Byte, Höherwertiges Byte) – der dem empfangenden Gerät verrät, welche der 16.384 möglichen Parameteradressen gemeint ist. Da der Matrix diesen Teil der Nachricht ignoriert, könnte man ihn auch weglassen – die meisten Controller senden ihn, weil er zum Standard gehört.
- Sende eine MIDI-CC-Nachricht Nr. 98. (Bzw.: Hex-Code 62h.) Dies ist das LSB – das niederwertige Byte – der Parameternummer.
- Sende die Nummer des zu veränderten Matrix-Parameters als den Wert der CC-Nachricht. Der Parameter für die Filter-Grenzfrequenz hat Nr. 21, also muss man „CC98: 21“ senden. (Bzw. in HEx-Code: CC 62h 15h.)
- Sende eine MIDI-CC-Nachricht Nr. 6. Sie sagt dem Empfänger: nun folgt der neue Wert des per NRPN gesteuerten Parameters.
- Sende den neuen Wert des Parameters plus plus 64. Der Synthesizer wird den Parameter jetzt auf diesen Wert setzen und ihn im LED-Display anzeigen.
(Genau genommen würde noch ein weiterer Wert folgen: die Feinsteuerung des Parameters, die über einen MIDI-CC-Befehl Nr. 38 übermittelt wird. Dieser wird aber vom Matrix nicht interpretiert und von vielen Controllern nicht gesendet.)

NPRN-Kontrollsequenz für die Filterfrequenz (Parameter Nr. 21 oder 15h). Der Matrix lauscht auf Midi-Kanal 5.
Okay. Aber warum muss ich 64 zum Parameter-Wert addieren? Die Antwort hat damit zu tun, wie Computer negative Zahlen darstellen.
MIDI-Signale werden in kleinen Päckchen namens Bytes übertragen. Von denen haben Sie sicher schon gehört, vielleicht auch davon, dass ein Byte üblicherweise 8 Bit hat – bei MIDI sind es nur 7, was für Zahlenwerte zwischen 0 und 127 geeignet ist. Um auch negative Werte übertragen zu können, werden sie gegebenenfalls nach einer Konvention namens „Zweierkomplement“ interpretiert, die einen Teil der Zahlenwerte in negative Zahlen umdeutet:
- 0 bedeutet weiter 0,
- Werte von 1 bis 63 bedeuten weiter 1 bis 63,
- der Wert 64 bedeutet -64,
- der Wert 65 bedeutet -63, 66 bedeutet -62 – und so weiter…
- 127 bedeutet -1.
Unglücklicherweise ist der NPRN-Standard nicht für negative Zahlen gedacht. Also dachten sich die Matrix-Programmierer einen Trick aus: wenn man 64 zu den Parameter-Werten addiert, verschiebt man sie in den positiven Bereich – den man dann via NRPN übertragen kann.
Schließen wir mit einem Beispiel: Sagen wir, Sie wollen die DCO1-Modulation der Pulsweite via LFO1 steuern, das ist Parameter Nr. 4. Die NRPN-Sequenz dafür sieht so aus:
- Max. neg. mod (-63): CC#99, 0, CC#98, 4, CC#6, 1.
- Min. neg. mod (-1): CC#99, 0, CC#98, 4, CC#6, 63.
- Keine mod (0): CC#99, 0, CC#98, 4, CC#6, 64.
- Min. pos. mod (+1): CC#99, 0, CC#98, 4, CC#6, 65.
- Max. pos. mod (+63): CC#99, 0, CC#98, 4, CC#6, 127.
Für einen Parameter funktioniert das nicht: Die Filterfrequenz (Parameter 21) hat ohnehin schon einen positiven Wertbereich von 0-127; deshalb wird der VCF parameter unverändert übertragen, ohne Addition von 64: CC#99, 0, CC#98, 21, CC#6, VCF-Wert. Das ist genau die Sequenz, die auch auf dem obigen Bild mitgeschnitten ist – für drei aufeinanderfolgende Filter-Werte.
Als Hilfe für die Programmierung von MIDI-Controllern für den Matrix ist hier ein PDF mit einer Liste aller Parameter zu finden – mit Parameternummer und Wertbereich für SYSEX and NRPN.
FAQ – häufige Fragen
- Ich weiß, dass es GliGlis V1.16-Firmware schon gibt und sie kostenlos herunter geladen werden kann. Was ist an der V1.20 so anders? – Sie hat einen anderen technischen Ansatz, um dem Matrix Beine zu machen – beschrieben im Abschnitt„Wie geht das?“ – der eine kontinuierliche Veränderung des Sounds ohne Sprünge sicher stellt. NRPN funktioniert jetzt nach Standard. Und diese Firmware zeigt die Werte an, wenn man an einem Sound-Parameter schraubt. (Und darf ich Ihnen ein Geheimnis verraten? Auch Bob bietet die Datei auf seiner Website einfach so zum Download an.)
- Kann man den Wert für die Verstimmung der Einzelstimmen gegeneinander (CC #94) irgendwie mit abspeichern? – Leider nicht. Dafür sieht der Patch-Speicher keinen Platz vor.
- Ich habe das EPROM getauscht, und jetzt funktioniert der Matrix nicht mehr. Was ist falsch gelaufen? – Keine Panik: es ist aller Wahrscheinlichkeit nach ein mechanisches Problem – vielleicht haben Sie beim Einstecken des Chips eins seiner Beinchen umgebogen, das passiert. Oder Sie haben den Chip falsch herum eingebaut. Einfach überprüfen – und den Chip noch einmal korrekt einsetzen. Natürlich könnte der Chip in ganz unglücklichen Fällen auch defekt sein – einfach melden, wir schicken einen neuen.
- Geht das Update bei meinem Matrix-1000? – Ja. Eine Einschränkung: Beim Einschalten zeigt das Display eine dreistellige Zahl – die Versionsnummer der Firmware. Sollte sie 1.03 oder kleiner anzeigen – das sind wirklich sehr alte Geräte – werden möglicherweise die 800 Preset-Sounds nicht mehr funktionieren, weil sie zu Beginn ein etwas anderes Format hatten – der Synthesizer braucht also auch ein Exemplar des Sound-ROMs. Einfach melden. Und ja: in einem einzigen Fall bei einem sehr alten Gerät war tatsächlich eine kleine Hardware-Änderung nötig (die Bob unglaublicherweise herausgefunden hat).
- Muss ich vor dem Update ein Backup von meinen Sounds machen? Nein. Der vorsichtige Austausch des ROMs bei ausgeschaltetem Gerät ändert nichts an den gespeicherten Einstellungen. Davon abgesehen ist ein Bank-Dump der Soundbanks 0 und 1 eine gute Idee – wer weiß, ob die Pufferbatterie nach über 25 Jahren nicht doch mal ausgetauscht werden will? (Obwohl sie sich in meinen Geräten ganz gut behauptet hat.)
- Warum spendiert man dem alten Synthesizer nicht einen neuen, schnellen Prozessor? – Keine schlechte Idee; Gligli hat’s versucht. Allerdings – abgesehen davon, dass der einzige pinkompatible Eins-zu-Eins-Ersatz der 63B09-Prozessor ist, der kein bisschen jünger ist als das Original und die Geschwindigkeit gerade verdoppelt – ist der Rest der alten Elektronik nicht für schnellere Prozessoren und ihre kürzeren Zugriffszeiten ausgelegt. Theoretisch wäre es möglich, einen so genannten FPGA-Chip mit einem 6809-Kern und Adapter-Elektronik einzusetzen, aber das Ganze wäre ein durchaus anspruchsvolles Entwicklungsprojekt, für das man einige Zeit bräuchte. Wie auch dafür, die Firmware für einen modernen Atmel- oder PIC-Microcontroller umzuschreiben.
- Ich hätte da noch eine Idee für ein absolutes Killerfeature in der Firmware! Macht ihr das? – Voraussichtlich nicht. Das Matrix-Projekt ist abgeschlossen, und es gibt noch so viele interessante alte Maschinen zu verstehen und zu verbessern.
- Warum muss man bei NRPN andere Werte übertragen als bei SYSEX; warum die zwangsweise Addition von 64? – Weil NRPN-Controller in der Regel keine negativen Werte erzeugen – der Versatz von 64 ($40) sorgt dafür, dass man den positiven Wertebereich von NRPN nutzen kann.
- He, ich weiß mit Bestimmtheit, dass ein EPROM nur 3 Euro kostet! Und ihr Schweine verlangt 25 Euro? – Schau mal, was Gligli-Eproms bei eBay kosten. Und deren Anbieter tun nicht, was ich tue: die Hälfte des Geldes an den Autor der Firmware überweisen, als kleine Anerkennung für all die vielen Stunden Arbeit, die darin stecken. Meine Hälfte deckt den Aufwand für den Chip, fürs Brennen, Labeln, Verpacken, Eintüten, Verschicken und eBay- und Paypal-Gebühren. Und gelegentlich ein Geschenk für meine Frau und meine Kinder und ein Apfelwein für mich.
PROM bestellen
Interesse? Ein Prom kostet €25 plus 2,50 für Verpackung und Versand. Darin sind $15 als Lizenzgebühr für den Autor der Firmware enthalten.
Der Verkauf erfolgt durch das Ingenieurbüro Günther Eggers, Tilsiter Str. 2, D-75181 Pforzheim. Die Kaufabwicklung läuft über Paypal – wer über das unten stehende Formular eine Bestellung bei mir aufgibt, bekommt über Paypal eine Rechnung von mir (ich hoffe, das klappt) als Kaufangebot. Erst bei Bezahlung kommt ein Kaufvertrag zustande; ich schicke das PROM dann sofort auf den Weg. Wer doch nicht möchte: einfach nichts tun, ich storniere die Rechnung dann nach einer Woche.
Käufer können das PROM 14 Tage nach Erhalt ohne Angabe von Gründen zurücksenden und erhalten den Kaufpreis zurück – ich bitte, die Versandkosten selbst zu tragen.