Skip to the content
2 layers21.5 × 12.2 mmPC910 Module, the printed circuit board in 3D

A Raspberry Pi Pico display replacement for the Roland MT-32, with a modern TFT/OLED, MIDI VU meters, and MIDI buffer-overflow protection.

Size
21.5 × 12.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
7
Nets
9
Pads
19
Tracks, vias
22, 11
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
12 Oct 2024
Updated
27 Jun 2026

Overview

PC910 Module is an open-source printed circuit board by RetroLoom, from the RetroLoom/sed1200emu repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 21.5 × 12.2 mm with 7 parts on 9 nets, routed with 22 tracks and 11 vias.

It is built around the TLP2361(E. Its parts include 2 connectors, 1 capacitor, 1 resistor and 1 IC. It belongs with the lEDs and displays and audio and music boards and the RP2040 boards of this library.

Main components

1

README

README.md

SED1200Emu

This project replaces the hard-to-obtain Epson SED1200-based LCD module found in the Roland MT-32 (and similar gear) with a modern Raspberry Pi Pico driving a color TFT or grayscale OLED panel. It captures the MT-32's native SED1200 display bus, mirrors the text onto the new panel, and adds a layer of modern features on top: real-time MIDI VU meters, color themes, screensavers/burn-in protection, and a browser-based monitor and control panel.

The project began as a drop-in replacement for the SED1200 using an ATMEGA8 and a standard HD44780 LCD. The original project page can be found at http://sensi.org/~tnt23/sed1200emu/index.html. All attempts to reach the original designer have failed — please reach out if you have any information. This Pico-based revision supersedes the ATMEGA8 design and is where active development now happens.

⚠️ This project is still in active testing. It works and is in use, but it has not been validated across every MT-32 revision, display, or MIDI host. Installation involves opening your synth and soldering to its main board. Use it at your own risk — there is no warranty. See Disclaimer & Warranty before you build or install.

The emulator running in a Roland MT-32, showing live per-channel activity and master volume.

Raspberry Pi Pico installed inside the MT-32, tapping the display bus and MIDI lines.

Features

  • Native SED1200 bus capture — reads the MT-32's original display data and re-renders it on a modern panel.
  • Two supported displays, selectable at compile time:
    • ST7789 — 284×76 RGB565 color TFT
    • SH1122 — 256×64 4-bit grayscale OLED
  • MIDI pass-through forwarder with overflow protection — sits inline between the MIDI source and the MT-32 CPU, solving a long-standing MT-32 problem: SysEx-heavy games can overflow the MT-32's small input buffer, causing dropped data, checksum errors, and stuck or wrong sounds. See MIDI Forwarding & Overflow Protection below.
  • Real-time VU meters — per-channel note activity with velocity-driven brightness, configurable size, position, and labels.
  • Color themes — selectable background/foreground color schemes (color on ST7789, grayscale on SH1122).
  • Screensavers & burn-in protection — automatic dimming and a choice of screensaver styles (blank, waves, plasma, ribbons, and customizable moving text).
  • Persistent settings in flash — all layout, theme, brightness, and behavior options survive power cycles.
  • Live configuration over USB serial or MIDI SysEx — no reflashing needed to tune the display.
  • Web-based monitor & control panel (MT32_Monitor.html) — a browser UI using the Web MIDI API to mirror the display, watch the MIDI buffer, and adjust device settings live.

Hardware

The core is a Raspberry Pi Pico. This repository also includes KiCad designs for the supporting hardware modules:

  • PC910 Module — opto-isolated MIDI input buffering.
  • ST7789 Shim — adapter/carrier for the ST7789 TFT panel.
  • SH1122 Shim — adapter/carrier for the SH1122 OLED panel.

Note: The MT-32 bezel blocks the lower portion of the display, so content is positioned in the upper area. A shim adapter determines the physical display position; see the module folders for the current designs.

Installation

The Pico and its shim board mount inside the MT-32, replacing the original SED1200 LCD. It taps the MT-32's internal display bus to read the text the synth wants to show, and sits inline on the MIDI input path so it can buffer and forward MIDI to the MT-32 CPU.

The Raspberry Pi Pico on its carrier board, wired into the MT-32 main board.

Opto-isolated MIDI tap soldered to the MT-32's CPU, feeding the forwarder's MIDI-in (MI) and MIDI-out (MO) lines.

MIDI Forwarding & Overflow Protection

One of the biggest benefits of this mod is what it does for MIDI reliability. The Pico doesn't just listen to the display — it sits inline between the MIDI source and the MT-32's CPU, forwarding every message. This solves a well-known MT-32 weakness: SysEx-heavy software can overrun the synth's small input buffer, causing dropped bytes, checksum errors, and missing or incorrect instruments.

The forwarder runs on the Pico's second core, isolating MIDI timing from display rendering. Incoming MIDI is received via DMA and sorted into three priority queues:

  • Real-time messages (clock, active sensing) can interleave anywhere, even mid-SysEx.
  • Channel-voice messages (notes, CCs, program changes) flow through at full wire speed, so game and song timing is preserved.
  • SysEx messages are sent atomically with address-aware pacing — the forwarder knows which MT-32 memory regions are slow to write and inserts just enough delay after each message to keep the synth's buffer from overflowing.

Additional reliability features:

  • Overflow & checksum monitoring — the firmware watches both the MIDI input hardware (for overrun/framing errors) and the MT-32's own display bus for its native "buffer overflow" and "checksum error" messages, with counters and diagnostics on the serial log.
  • Runtime pacing toggle — pacing can be turned off for hosts that already pace SysEx themselves (e.g. Orpheus PCMIDI intelligent mode, SoftMPU, DOSBox mt32.delay), letting MIDI pass through transparently at wire speed.
  • MIDI back-channel — responses are sent to the MT-32 with a manufacturer ID the synth ignores, so they appear on its MIDI THRU jack where the web monitor can read device state.

Building the Firmware

The firmware is built with the Raspberry Pi Pico SDK and CMake. The source lives in src/pico/.

Prerequisites

  • Raspberry Pi Pico SDK
  • CMake (3.13+) and the ARM GCC toolchain (arm-none-eabi-gcc)
  • Ninja or Make

Select your display

Open src/pico/display.h and set the display type:

c
// SELECT YOUR DISPLAY HERE:
#define DISPLAY_TYPE DISPLAY_TYPE_ST7789   // or DISPLAY_TYPE_SH1122

Configure and build

Point CMake at your SDK (use an absolute path) and build:

bash
cd src/pico
cmake -B build -DPICO_SDK_PATH=/path/to/pico-sdk
cmake --build build

The resulting firmware image is build/sed1200_display.uf2.

Flashing

Hold the BOOTSEL button while plugging the Pico into USB so it mounts as a mass-storage device, then copy sed1200_display.uf2 onto it. The Pico reboots and runs the firmware automatically.

Configuration

Settings are stored persistently in the Pico's flash and can be changed at runtime — no reflashing required.

Web Monitor & Control

Open MT32_Monitor.html in a browser that supports the Web MIDI API (e.g. Chrome/Edge). It connects to the device over MIDI and lets you:

  • Mirror the SED display text live
  • Monitor MIDI activity and the forwarder's buffer state
  • Adjust themes, VU meters, brightness, screensaver behavior, and layout
  • Toggle SysEx pacing
  • Save settings to flash or reset to factory defaults

The device exposes a MIDI back-channel via the MT-32's MIDI THRU, allowing the browser to read device state and push changes.

USB Serial / SysEx

The same configuration parameters are available over USB serial and over MIDI SysEx (MT-32-compatible message format), including theme, SED text position/scale, display offset and brightness, VU meter layout and labels, channel indicators, screen-protection timeouts, screensaver style and text, and SysEx pacing. Settings can be saved, loaded, or reset to defaults.

Serial Debugging

The firmware uses USB for stdio output. Connect a serial terminal to view debug and status messages.

Documentation

Reference material lives in documents/, including the MT-32 Implementation Guide (patch/timbre system and SysEx details), the Roland MT-32 owner's manual and service notes, the SED1200 and display datasheets, and the MT-32 sound list.

Original ATMEGA8 Version

Before the Pico-based redesign, this project used an ATMEGA8 to drive a standard HD44780 character LCD as a direct SED1200 replacement. That version is preserved in the project's git history.

The original ATMEGA8 + HD44780 build.

Disclaimer & Warranty

This project is provided "as is," without warranty of any kind. It is an enthusiast hardware/firmware modification that is still in its testing phases — actively developed and in use, but not exhaustively validated across all MT-32 hardware revisions, displays, MIDI sources, or operating conditions. Bugs, regressions, and breaking changes should be expected between revisions.

Please understand and accept the following before building or installing:

  • You install and use this at your own risk. Installation requires opening a vintage instrument and soldering to its main board. Done incorrectly, this can permanently damage your MT-32, the Pico, the display, or connected equipment.
  • No guarantee of fitness. There is no guarantee that the hardware or firmware will work for your particular unit or use case, or that it is free of defects.
  • Not affiliated with Roland. "Roland" and "MT-32" are trademarks of their respective owners. This is an independent, unofficial project and is not endorsed by or affiliated with Roland.
  • Modifications void any remaining manufacturer warranty and may affect the value of collectible hardware.

To the fullest extent permitted by law, the authors and contributors accept no liability for any damage, loss, or injury arising from the use of this project. The full legal terms are in the GPL v3 (software) and CERN OHL-S (hardware) licenses below — note especially their "no warranty" and "disclaimer of liability" sections.

If you find a problem or have improvements, contributions and bug reports are very welcome.

License Information

This project is derived from the original release by Tim Tashpulatov, which was released without license or warranty. The updated revisions of this project (2024 onward) include a GPL v3 license, found in the LICENSE file.

Source code and software license — GPL v3

Hardware design license — CERN OHL-S

Parts

7
QtyValueFootprintReferences
10.1uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
11KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1
1DIP-LConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1DIP-RConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1MITestPoint:TestPoint_Pad_1.5x1.5mmTP2
1MOTestPoint:TestPoint_Pad_1.5x1.5mmTP1
1TLP2361Package_SO:SO-5-6_4.55x3.7mm_P1.27mmU2

More from RetroLoom/sed1200emu

2
  • 2 layers90 × 25 mmST7789 Shim, the printed circuit board in 3D

    ST7789 Shim

    RetroLoom/sed1200emu

    A Raspberry Pi Pico display replacement for the Roland MT-32, with a modern TFT/OLED, MIDI VU meters, and MIDI buffer-overflow protection.

    16 parts4GPL-3.0
  • 2 layers62.5 × 39.8 mmSed1200emu, the printed circuit board in 3D

    Sed1200emu

    RetroLoom/sed1200emu

    A Raspberry Pi Pico display replacement for the Roland MT-32, with a modern TFT/OLED, MIDI VU meters, and MIDI buffer-overflow protection.

    15 parts4GPL-3.0

Similar boards

  • 2 layers64 × 67 mmMidi, the printed circuit board in 3D

    Midi

    keshikan/CureMIDI

    USB-MIDI Interface(2IN/2OUT) for STM32

    182 parts65
  • 4 layers100.9 × 77.5 mmYm2610-pcb, the printed circuit board in 3D

    Ym2610-pcb

    dan-rodrigues/ym2610-pcb

    FPGA-based PCB to control a YM2610 sound synthesis chip.

    168 parts31
  • 4 layers70 × 70 mmDmx, the printed circuit board in 3D

    Dmx

    versioduo/dmx

    🚥 MIDI to DMX Bridge

    63 parts18
  • 2 layers109.7 × 109.5 mmDc31, the printed circuit board in 3D

    Dc31

    dczia/Defcon31-Badge

    DCZia DC31 Badge

    76 parts16
  • 2 layers77 × 70.5 mmPanel, the printed circuit board in 3D

    Panel

    brainsmoke/chiral_sphere

    another round thing

    184 parts13
  • 4 layers65.9 × 52.9 mmEX CSB1, the printed circuit board in 3D

    EX CSB1

    DCC-EX/EX-CSB1

    Open source EX-CSB1 CommandStation / Booster

    103 parts13
  • 4 layers119 × 63.2 mmOpenChordM1, the printed circuit board in 3D

    OpenChordM1

    FugLong/OpenChord

    An open-source music device for portable, expressive, and extensible audio creation.

    75 parts3MIT
  • 2 layers140 × 76.9 mmJoyMIDI, the printed circuit board in 3D

    JoyMIDI

    bcc6/joyMIDI-HW

    222 parts2

Questions

How big is the PC910 Module PCB?

It measures 21.5 × 12.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PC910 Module use?

7 parts, built around the TLP2361(E. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PC910 Module KiCad files?

From the RetroLoom/sed1200emu repository on GitHub, at the commit this page was made from: the board is PC910 Module/PC910 Module.kicad_pcb and its schematic PC910 Module/PC910 Module.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PC910 Module design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).