Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Roland MT-32 emulation

Copperline includes built-in Roland MT-32 emulation via mt32-rs, a Rust port of Munt’s mt32emu. Emulated MIDI audio is mixed alongside the Amiga’s native four-channel Paula output.

An interactive virtual front panel can be displayed beneath the video output.

ROM requirements

To use MT-32 emulation, you must provide two ROM images:

  1. Control ROM (e.g., v1.07 or v2.07)

  2. PCM ROM (sample data)

Supported modules include MT-32 (revisions 1 and 2), CM-32L, LAPC-I, and CM-32LN.

Example ROM hashes

FilenameVersionSHA-1 Hash
mt32_ctrl_2_07.romv2.0747b52adefedaec475c925e54340e37673c11707c
MT32_CONTROL.ROMv1.07b083518fffb7f66b03c23b7eb4f868e62dc5a987
MT32_PCM.ROMAllf6b1eebc4b2d200ec6d3d21d51325d5b48c60252

ROMs are verified by size and SHA-1 checksum upon loading.

Configuration

In the launcher:

  1. Navigate to I/O Ports -> Serial Port.

  2. Set Device / Mode to MIDI.

  3. Set MIDI output to MT-32.

  4. Select paths for Control ROM and PCM ROM.

  5. Optionally enable Front panel and select an LCD display style.

In copperline.toml:

[serial]
mode = "midi"
midi_out = "mt32"
mt32_control_rom = "~/Amiga/MT32_CONTROL.ROM"
mt32_pcm_rom = "~/Amiga/MT32_PCM.ROM"
mt32_panel = true          # Show front panel (default: false)
mt32_lcd = "mt32"          # Display style: mt32, superjv, sseries, or oled

Command-line usage:

./target/release/copperline --model A1200 KICK31.ROM \
  --midi-out mt32 \
  --mt32-control-rom MT32_CONTROL.ROM \
  --mt32-pcm-rom MT32_PCM.ROM \
  --mt32-panel

[serial] configuration keys

KeyValuesDescription
midi_out"mt32"Route serial MIDI output to built-in MT-32
midi_in"mt32"Wire MT-32 MIDI OUT back to serial input
mt32_control_romFile pathPath to Control ROM image
mt32_pcm_romFile pathPath to PCM ROM image
mt32_paneltrue / falseDisplay virtual front panel (default: false)
mt32_lcd"mt32", "superjv", "sseries", "oled"LCD appearance style (default: "mt32")

Patch editors and librarians

Software such as patch editors and librarians (e.g., Caged Artist MT-32 Editor) send SysEx requests and expect responses. Set midi_in = "mt32" to route the virtual synthesizer’s MIDI output back into the Amiga’s serial port.

Virtual front panel

The MT-32 front panel

When mt32_panel = true is set, a reproduction of the MT-32 hardware panel is shown below the video output:

Panel controls

ControlFunction
PART 1-5, PART RSelect part to configure
SOUND GROUPCycle sound group (Preset A, Preset B, Memory, Rhythm)
SOUNDSelect patch number (0-63)
VOLUMEAdjust volume for selected part (0-100)
MASTER VOLUMEAdjust overall synthesizer output level
DialAdjust parameter values (click or drag)
POWERPower cycle the synthesizer engine

Multi-button combinations (Powered on)

Hold MASTER VOLUME (right-click), then click the corresponding button:

CombinationFunction
MASTER VOLUME + GROUPAdjust master tuning (427.5 to 452.6 Hz)
MASTER VOLUME + VOLUMESelect reverb mode (0-3)
MASTER VOLUME + SOUNDSet MIDI device unit number
MASTER VOLUME + PART 1, 2, 3Select parts 6, 7, and 8
MASTER VOLUME + PART 4Overflow assign mode (confirm with PART 1)
MASTER VOLUME + PART 5Remap parts 1-8 to MIDI channels 1-8 (confirm with PART 1)
MASTER VOLUME + PART RSystem master reset (confirm with PART 1)

Startup combinations (Power off)

With power off, right-click button combination and click POWER:

CombinationFunction
MASTER VOLUME + POWERBuilt-in demo sequence (requires v2.x ROM)
1 + 3 + MASTER VOLUME + POWERROM test / firmware version display

LCD display styles

ValueAppearancePreview
mt32Classic 1987 green-backlit LCDMT-32 LCD
superjvOrange-backlit displaySuperJV LCD
sseriesFluorescent display stylingSSeries LCD
oledHigh-contrast white OLED stylingOLED LCD

Runtime controls

In an active emulation window, the top menu bar under Serial Port allows switching MIDI output between MT-32, Coppersynth, or host MIDI ports without restarting emulation.

ROM images can be loaded or changed dynamically from the Serial Port -> MT-32 menu.

Building without MT-32 support

To exclude MT-32 support when compiling from source:

cargo build --release --no-default-features \
  --features "midi,frontend,wasm-boards,control,ctl-bin,net-nat,net-bridge,fluxbridge,coppersynth,cpu-jit,profile-stats,game-library,mhi,cd-mp3"

Troubleshooting