A new instrument: Oberheim's Xpander and Matrix family #15

Closed
opened 2026-10-12 02:41:27 +00:00 by bcox · 2 comments
Owner

Oberheim's matrix-modulation synthesizers as a new instrument: the Xpander, the Matrix-12, and the Matrix-6 and Matrix-1000. Not started.

Everything below is from recollection, with nothing read. Find and read the owner's and service manuals before designing anything, and put them in docs/references.md.

The instruments, as recalled

  • Xpander (1984). Six voices, no keyboard. Each voice: two VCOs (sawtooth, triangle, pulse), a filter with fifteen modes, two amplifiers in a row, five envelopes with a delay stage, five LFOs, four ramp generators, three tracking generators, a lag processor, and FM from VCO 2 to VCO 1 or to the filter. Modulation is a matrix: a number of free routes for each voice beside the fixed ones. Each voice can hold a different patch.
  • Matrix-12 (1985). Two Xpanders under a keyboard: twelve voices, with velocity, release velocity and pressure.
  • Matrix-6 (1986), its rack the Matrix-6R, and the Matrix-1000 (1987). Six voices of a simpler kind: two DCOs a voice, a four-pole low-pass alone, three envelopes, two LFOs, two ramps, one tracking generator, and a smaller matrix. The Matrix-1000 is the same voice with a thousand patches and almost no panel.

To settle with the owner first

  • One instrument or two. The Xpander and Matrix-12 are one voice; the Matrix-6 and Matrix-1000 are another, with DCOs where those have VCOs and a low-pass where those have fifteen modes. The Juno and the SEM family each made several machines one instrument. Whether the smaller voice is settings of the larger, as the OB-X is settings of a SEM, wants the manuals read.
  • Its name, and its programs' names. "Oberheim", "Xpander" and "Matrix-12" are trademarks.

What it needs that is not here yet

  • The modulation matrix: #7. This is the instrument, and it should be built in engine/ so that the SEM family can have it too. Do #7 first, or as the first part of this.
  • A filter with fifteen modes. They are understood to come from one four-pole filter by mixing its stages' outputs, which engine/four_pole_filter.h could offer: it has the four stages. Which mixtures, and what each mode is called, wants the service manual. Nothing may be taken from an emulator's code.
  • Ramp generators, tracking generators and a lag processor as modulation sources, which no instrument here has.
  • More LFOs and envelopes a voice than any instrument here: five of each. Their cost on the Pi 3B at twelve voices needs measuring early. They are digital on the hardware and slow; ours are read once a block.
  • Release velocity, which engine/midi.h does not pass on.

What is already here to build on

  • engine/analog_vco.h: a VCO giving sawtooth, pulse and triangle from one ramp, with sync and through-zero running for FM.
  • engine/envelope.h: now has a delay stage.
  • engine/ramp_oscillator.h, if the Matrix-6's DCOs are made as Roland's are.
  • The SEM family's sounds, where each voice plays one of several whole patches, and engine/zones.h: the Xpander's and Matrix-12's multi mode and zones are the same idea.
  • engine/variance.h, engine/portamento.h, the shared arpeggiator and effects.
  • instruments/README.md says what an instrument must provide.

Provenance

These machines have firmware and patch memory, which the SEM family did not.

  • Rule 3: no firmware disassembly and nothing extracted from a ROM. Their envelope and LFO timings and their curves come from the manuals or from measuring a real instrument, or are placeholders.
  • Rule 4: no factory patches. The Matrix-1000's thousand are Oberheim's. Reading a user's own SysEx dump at run time is allowed, and these instruments' SysEx is documented, so a numbered panel.h like the Juno-106's may be the right shape.
  • Rule 2: several emulations exist. None's code may be read for more than how a problem is structured, and nothing lifted.
Oberheim's matrix-modulation synthesizers as a new instrument: the Xpander, the Matrix-12, and the Matrix-6 and Matrix-1000. Not started. Everything below is from recollection, with nothing read. **Find and read the owner's and service manuals before designing anything**, and put them in `docs/references.md`. ## The instruments, as recalled - **Xpander** (1984). Six voices, no keyboard. Each voice: two VCOs (sawtooth, triangle, pulse), a filter with fifteen modes, two amplifiers in a row, five envelopes with a delay stage, five LFOs, four ramp generators, three tracking generators, a lag processor, and FM from VCO 2 to VCO 1 or to the filter. Modulation is a matrix: a number of free routes for each voice beside the fixed ones. Each voice can hold a different patch. - **Matrix-12** (1985). Two Xpanders under a keyboard: twelve voices, with velocity, release velocity and pressure. - **Matrix-6** (1986), its rack the **Matrix-6R**, and the **Matrix-1000** (1987). Six voices of a simpler kind: two DCOs a voice, a four-pole low-pass alone, three envelopes, two LFOs, two ramps, one tracking generator, and a smaller matrix. The Matrix-1000 is the same voice with a thousand patches and almost no panel. ## To settle with the owner first - **One instrument or two.** The Xpander and Matrix-12 are one voice; the Matrix-6 and Matrix-1000 are another, with DCOs where those have VCOs and a low-pass where those have fifteen modes. The Juno and the SEM family each made several machines one instrument. Whether the smaller voice is settings of the larger, as the OB-X is settings of a SEM, wants the manuals read. - **Its name**, and its programs' names. "Oberheim", "Xpander" and "Matrix-12" are trademarks. ## What it needs that is not here yet - **The modulation matrix: #7.** This is the instrument, and it should be built in `engine/` so that the SEM family can have it too. Do #7 first, or as the first part of this. - **A filter with fifteen modes.** They are understood to come from one four-pole filter by mixing its stages' outputs, which `engine/four_pole_filter.h` could offer: it has the four stages. Which mixtures, and what each mode is called, wants the service manual. Nothing may be taken from an emulator's code. - **Ramp generators, tracking generators and a lag processor** as modulation sources, which no instrument here has. - **More LFOs and envelopes a voice** than any instrument here: five of each. Their cost on the Pi 3B at twelve voices needs measuring early. They are digital on the hardware and slow; ours are read once a block. - **Release velocity**, which `engine/midi.h` does not pass on. ## What is already here to build on - `engine/analog_vco.h`: a VCO giving sawtooth, pulse and triangle from one ramp, with sync and through-zero running for FM. - `engine/envelope.h`: now has a delay stage. - `engine/ramp_oscillator.h`, if the Matrix-6's DCOs are made as Roland's are. - The SEM family's sounds, where each voice plays one of several whole patches, and `engine/zones.h`: the Xpander's and Matrix-12's multi mode and zones are the same idea. - `engine/variance.h`, `engine/portamento.h`, the shared arpeggiator and effects. - `instruments/README.md` says what an instrument must provide. ## Provenance These machines have firmware and patch memory, which the SEM family did not. - Rule 3: no firmware disassembly and nothing extracted from a ROM. Their envelope and LFO timings and their curves come from the manuals or from measuring a real instrument, or are placeholders. - Rule 4: no factory patches. The Matrix-1000's thousand are Oberheim's. Reading a user's own SysEx dump at run time is allowed, and these instruments' SysEx is documented, so a numbered `panel.h` like the Juno-106's may be the right shape. - Rule 2: several emulations exist. None's code may be read for more than how a problem is structured, and nothing lifted.
Author
Owner

Settled by Ben on 2026-10-17:

  • One instrument, the Xpander, Matrix-12 and Matrix-6 (and 6R), named minixp.
  • The Matrix-1000 is not named. Its voice is the Matrix-6's, so it comes as settings; its presets are not wanted (and are out by rule 4 anyway).
  • Placeholders are fine for envelope, LFO and ramp timings and curves the manuals do not give.

Already in since this issue was written: the modulation matrix (#7), release velocity, envelope delay, sounds and zones. Left: read the manuals; a 15-mode filter in engine/; ramp, tracking and lag sources; five envelopes and five LFOs a voice; the Matrix-6 as settings; the instrument itself; an early Pi bench.

Settled by Ben on 2026-10-17: - **One instrument**, the Xpander, Matrix-12 and Matrix-6 (and 6R), named `minixp`. - **The Matrix-1000 is not named.** Its voice is the Matrix-6's, so it comes as settings; its presets are not wanted (and are out by rule 4 anyway). - **Placeholders are fine** for envelope, LFO and ramp timings and curves the manuals do not give. Already in since this issue was written: the modulation matrix (#7), release velocity, envelope delay, sounds and zones. Left: read the manuals; a 15-mode filter in `engine/`; ramp, tracking and lag sources; five envelopes and five LFOs a voice; the Matrix-6 as settings; the instrument itself; an early Pi bench.
Author
Owner

Built as mini-XP (minixp, port 8818, instruments/xpander/): the Xpander, Matrix-12 and Matrix-6/6R as one instrument, with a 15-mode filter, ramp, tracking and lag generators, a quantized route curve and a squared amount law in engine/, and six zones for every zoned instrument. Ben played it on the Pi on 2026-10-17 and found it sounds great, and confirmed every choice made for it. Not done, and not to be ticketed: the Matrix-6 SysEx and numbered panel, stored multis, a MIDI channel per zone, the rear-panel inputs (#17), separate outputs. Closing.

Built as mini-XP (`minixp`, port 8818, `instruments/xpander/`): the Xpander, Matrix-12 and Matrix-6/6R as one instrument, with a 15-mode filter, ramp, tracking and lag generators, a quantized route curve and a squared amount law in `engine/`, and six zones for every zoned instrument. Ben played it on the Pi on 2026-10-17 and found it sounds great, and confirmed every choice made for it. Not done, and not to be ticketed: the Matrix-6 SysEx and numbered panel, stored multis, a MIDI channel per zone, the rear-panel inputs (#17), separate outputs. Closing.
bcox closed this issue 2026-10-17 05:43:38 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/mini-800#15
No description provided.