Skip to content

Hardware Compatibility Matrix

pyoneerC edited this page Sep 13, 2026 · 4 revisions

Hardware Synthesizer Compatibility Matrix

The bipluk.com platform features modular synthesizer adapters located in sysex_adapters/. Each adapter implements synth-specific header identification, edit buffer auditioning, bank parsing, and checksum recalculation.


1. Synthesizer Memory Architecture Taxonomy

Different manufacturers structure SysEx memory through distinct message topologies:

graph TD
    Root["Synthesizer SysEx Memory Topologies"] --> TypeA["Bulk Bank Dumps (Monolithic)"]
    Root --> TypeB["Single Voice / Edit Buffer Dumps"]
    Root --> TypeC["Realtime Parameter Streams"]

    TypeA --> A1["Packed Raw (e.g. DX7 4,096 bytes / 32 voices)"]
    TypeA --> A2["Block Checksummed (e.g. Roland D-50 35,920 bytes / 64 voices)"]
    TypeA --> A3["Nibblized (e.g. Korg M1 16,384 bytes)"]

    TypeB --> B1["Immediate Audition (Writes to volatile RAM edit buffer)"]
    TypeB --> B2["Direct Patch Storage (Writes to targeted memory slot)"]

    TypeC --> C1["Continuous Controller Emulation (e.g. Roland Juno-106 sliders)"]
    TypeC --> C2["NRPN / High-Resolution SysEx Parameters"]
Loading

2. Comprehensive Synthesizer Compatibility Guide

Warning

Counterfeit USB-to-MIDI Cables: Budget unbranded USB-to-DIN converter cables (commonly priced under $10) frequently lack internal optocouplers and microprocessor FIFO buffers. These cables reliably fail or corrupt large SysEx bulk transfers. We strongly recommend using genuine Roland, Yamaha, MOTU, or iConnectivity interfaces.

Tip

Roland Super JX / MKS-70: Individual parameter SysEx transmission requires upgraded ROM version 4.08 or Colin Fraser / Fred Vecoven aftermarket firmware. Earlier stock ROMs only support bulk dump transfers.

Below is the verified compatibility matrix for hardware instruments supported by bipluk.com:

Manufacturer Model Single Patch Size Bank Dump Size Checksum Algorithm Recommended Inter-Packet Delay
Yamaha DX7 (Mk1) 163 bytes (155 raw) 4,104 bytes (4,096 data) 7-bit two's complement sum 40ms
Yamaha DX7II-FD / DX7II-D 266 bytes 4,096 / 16,384 bytes Yamaha DX7II checksum 35ms
Yamaha TX7 163 bytes 4,104 bytes 7-bit two's complement sum 50ms
Yamaha TX81Z 93 bytes (VCED) 4,096 bytes (32 V + 24 P) Yamaha 4-OP checksum 40ms
Yamaha Reface DX 1,024 bytes (SysEx/JSON) Bulk voice dumps Standard Yamaha Syx USB Native / 10ms
Yamaha FS1R 1,842 bytes 128,490 bytes (Bulk) Yamaha FS1R block check 30ms
Yamaha YC Series Custom SysEx Stage settings Yamaha YC protocol USB Native
Roland D-50 / D-550 458 bytes 35,920 bytes (64 patches) Roland 7-bit two's complement 30ms
Roland Juno-106 18 bytes (parameter) Realtime slider stream Direct parameter execution Immediate / 5ms
Roland JV-1080 / JV-2080 1,088 bytes 65,536 bytes Roland 7-bit two's complement 25ms
Roland MKS-70 / Super JX 156 bytes 8,960 bytes Roland two's complement (V4 ROM) 40ms
Roland JX-8P 128 bytes 8,192 bytes Roland direct block dump 50ms
Roland JD-Xi Variable Variable Roland 7-bit two's complement USB Native / 15ms
Roland SE-02 128 bytes Bulk patch dumps Roland Boutique standard USB / 15ms
Roland U-20 / U-220 256 bytes Multi-timbral bank dumps Roland 7-bit two's complement 35ms
Korg M1 / M1R 156 bytes 16,384 bytes (100 combi/prog) Korg 7-to-8 bit nibble sum 50ms
Korg MS2000 / MS2000R 480 bytes 61,440 bytes (128 programs) Korg MS checksum 30ms
Korg microKORG 256 bytes 32,768 bytes Korg micro checksum 25ms
Korg DW-8000 / EX-8000 52 bytes 3,328 bytes (64 programs) Korg DW nibble checksum 45ms
Korg Minilogue XD Variable Bulk program dumps Korg CRC checksum USB Native
Sequential Prophet-5 Rev4 512 bytes Bank dumps DSI/Sequential packed nibbles 30ms
Sequential Prophet-6 1,024 bytes Bulk program dumps DSI/Sequential packed format 20ms
Sequential OB-6 1,024 bytes Bulk program dumps DSI/Sequential packed format 20ms
Sequential Prophet '08 384 bytes Bulk program dumps DSI packed format 25ms
Sequential Prophet 12 1,024 bytes Bulk program dumps DSI packed format 20ms
Sequential Tempest Multi-packet Drum sound/kit dumps DSI Tempest packet framing 25ms
Oberheim Matrix 6 / 6R 275 bytes 27,500 bytes (100 patches) Matrix nibblized format 60ms
Oberheim Matrix 1000 275 bytes 55,000 bytes (200 RAM) Matrix nibblized format 60ms
Oberheim OB-8 / OB-Xa Variable Cassette / SysEx format Oberheim standard 50ms
Oberheim TEO-5 1,024 bytes Bulk program dumps Sequential/Oberheim format 20ms
Waldorf Blofeld 384 bytes Bulk bank dump Waldorf Blofeld checksum USB / 15ms
Waldorf Pulse / Pulse 2 128 bytes Bulk program dump Waldorf Pulse checksum 35ms
Waldorf MicroWave 1 256 bytes Multi-bank dump Waldorf MW1 framing 40ms
Alesis Andromeda A6 1,024 bytes Bulk voice dump Alesis A6 SysEx format 30ms
Ensoniq ESQ-1 / SQ-80 102 bytes 4,080 bytes (40 programs) Ensoniq nibble stream 50ms
Kawai K1 / K1m / K1 II 98 bytes 6,272 bytes (64 single + 32 multi) Kawai K1 block checksum 45ms
Kawai K4 / K4r 131 bytes 8,384 bytes Kawai K4 block checksum 40ms
Kawai K5000 / K5000S Multi-block Additive sound bank Kawai K5000 protocol 30ms
Novation Bass Station II 512 bytes Bank dump Novation AFX/BS2 SysEx USB Native
Casio CZ-101 / CZ-1000 270 bytes (nibblized) 4,320 bytes (16 voices) Casio 4-bit nibble stream 50ms
Casio CZ-5000 / CZ-1 270 bytes 8,640 bytes (32 voices) Casio 4-bit nibble stream 45ms
Akai S900 / S1000 / S3000 Variable Sample dumps (SDS) MIDI SDS XOR 7-bit checksum 40ms
Ensoniq Mirage Variable Disk/Sample dumps (SDS) MIDI SDS protocol 50ms
Behringer Pro-800 256 bytes Bulk bank dump Behringer SysEx format USB / 20ms
Behringer Deepmind 12 Multi-packet 1,024 programs Deepmind SysEx protocol USB / 15ms

3. Adapter Inheritance Architecture

The adapter engine in sysex_adapters/ uses an object-oriented modular design:

classDiagram
    class GenericAdaptation {
        +string manufacturerName
        +string modelName
        +identify(bytes) bool
        +extractPatches(bytes) List~Patch~
        +calculateChecksum(bytes) int
    }
    class GenericProgramDumpCapability {
        +parseSingleVoice(bytes) Patch
        +buildSingleVoice(Patch) bytes
    }
    class GenericBankDumpCapability {
        +int patchCount
        +int patchByteLength
        +sliceBank(bytes) List~bytes~
    }
    class GenericEditBufferCapability {
        +buildEditBufferMessage(parameterId, value) bytes
    }

    GenericAdaptation <|-- GenericProgramDumpCapability
    GenericAdaptation <|-- GenericBankDumpCapability
    GenericAdaptation <|-- GenericEditBufferCapability
Loading

4. Contributing New Synthesizer Adapters

To add support for a new synthesizer model:

  1. Review the protocol mathematical specifications in SysEx Specifications and Checksums and buffer timings in Web MIDI Protocol Engine.
  2. Implement the parser class inheriting from GenericAdaptation in sysex_adapters/.
  3. Provide unit tests in sysex_adapters/test_<ModelName>.py with representative .syx test data.
  4. If testing against physical DIN hardware, consult the Hardware MIDI Troubleshooting Guide.
  5. Submit a Pull Request to https://github.com/maxcomperatore/bipluk.com.

Clone this wiki locally